== 1.3alpha - 2003/03/12===
authorPetr Skoda <info@skodak.org>
Sun, 12 Mar 2006 18:39:56 +0000 (18:39 +0000)
committerPetr Skoda <info@skodak.org>
Sun, 12 Mar 2006 18:39:56 +0000 (18:39 +0000)
    * compatible with 1.6dev only, use previous version for 1.5.x
    * unicode upgrade supported - not much tested
    * backup fixes - from Penny Leach, thanks!
    * all languages converted to utf-8
    * moved to contrib/book_16 directory
    * added proper content encoding conversion during import

166 files changed:
README.txt [new file with mode: 0644]
backuplib.php [new file with mode: 0644]
book_print.css [new file with mode: 0644]
book_theme.css [new file with mode: 0644]
config.html [new file with mode: 0644]
coursefiles.php [new file with mode: 0644]
db/migrate2utf8.php [new file with mode: 0755]
db/migrate2utf8.xml [new file with mode: 0755]
db/mysql.php [new file with mode: 0644]
db/mysql.sql [new file with mode: 0644]
db/postgres7.php [new file with mode: 0644]
db/postgres7.sql [new file with mode: 0644]
delete.php [new file with mode: 0644]
edit.html [new file with mode: 0644]
edit.php [new file with mode: 0644]
icon.gif [new file with mode: 0644]
icon_chapter.gif [new file with mode: 0644]
import.php [new file with mode: 0644]
index.php [new file with mode: 0644]
lang/be_utf8/book.php [new file with mode: 0644]
lang/be_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/be_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/be_utf8/help/book/edit.html [new file with mode: 0644]
lang/be_utf8/help/book/faq.html [new file with mode: 0644]
lang/be_utf8/help/book/import.html [new file with mode: 0644]
lang/be_utf8/help/book/index.html [new file with mode: 0644]
lang/be_utf8/help/book/mods.html [new file with mode: 0644]
lang/be_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/be_utf8/help/book/summary.html [new file with mode: 0644]
lang/ca_utf8/book.php [new file with mode: 0644]
lang/ca_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/ca_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/ca_utf8/help/book/edit.html [new file with mode: 0644]
lang/ca_utf8/help/book/faq.html [new file with mode: 0644]
lang/ca_utf8/help/book/import.html [new file with mode: 0644]
lang/ca_utf8/help/book/index.html [new file with mode: 0644]
lang/ca_utf8/help/book/mods.html [new file with mode: 0644]
lang/ca_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/ca_utf8/help/book/summary.html [new file with mode: 0644]
lang/cs_utf8/book.php [new file with mode: 0644]
lang/cs_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/cs_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/cs_utf8/help/book/edit.html [new file with mode: 0644]
lang/cs_utf8/help/book/faq.html [new file with mode: 0644]
lang/cs_utf8/help/book/import.html [new file with mode: 0644]
lang/cs_utf8/help/book/index.html [new file with mode: 0644]
lang/cs_utf8/help/book/mods.html [new file with mode: 0644]
lang/cs_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/cs_utf8/help/book/summary.html [new file with mode: 0644]
lang/de_utf8/book.php [new file with mode: 0644]
lang/de_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/de_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/de_utf8/help/book/edit.html [new file with mode: 0644]
lang/de_utf8/help/book/faq.html [new file with mode: 0644]
lang/de_utf8/help/book/import.html [new file with mode: 0644]
lang/de_utf8/help/book/index.html [new file with mode: 0644]
lang/de_utf8/help/book/mods.html [new file with mode: 0644]
lang/de_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/de_utf8/help/book/summary.html [new file with mode: 0644]
lang/en_utf8/book.php [new file with mode: 0644]
lang/en_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/en_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/en_utf8/help/book/edit.html [new file with mode: 0644]
lang/en_utf8/help/book/faq.html [new file with mode: 0644]
lang/en_utf8/help/book/import.html [new file with mode: 0644]
lang/en_utf8/help/book/index.html [new file with mode: 0644]
lang/en_utf8/help/book/mods.html [new file with mode: 0644]
lang/en_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/en_utf8/help/book/summary.html [new file with mode: 0644]
lang/es_utf8/book.php [new file with mode: 0644]
lang/fi_utf8/book.php [new file with mode: 0644]
lang/fi_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/fi_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/fi_utf8/help/book/edit.html [new file with mode: 0644]
lang/fi_utf8/help/book/faq.html [new file with mode: 0644]
lang/fi_utf8/help/book/import.html [new file with mode: 0644]
lang/fi_utf8/help/book/index.html [new file with mode: 0644]
lang/fi_utf8/help/book/mods.html [new file with mode: 0644]
lang/fi_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/fi_utf8/help/book/summary.html [new file with mode: 0644]
lang/fr_utf8/book.php [new file with mode: 0644]
lang/id_utf8/book.php [new file with mode: 0644]
lang/id_utf8/help/book/faq.html [new file with mode: 0644]
lang/id_utf8/help/book/index.html [new file with mode: 0644]
lang/id_utf8/help/book/mods.html [new file with mode: 0644]
lang/id_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/id_utf8/help/book/summary.html [new file with mode: 0644]
lang/it_utf8/book.php [new file with mode: 0644]
lang/ja_utf8/book.php [new file with mode: 0644]
lang/ja_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/ja_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/ja_utf8/help/book/edit.html [new file with mode: 0644]
lang/ja_utf8/help/book/faq.html [new file with mode: 0644]
lang/ja_utf8/help/book/import.html [new file with mode: 0644]
lang/ja_utf8/help/book/index.html [new file with mode: 0644]
lang/ja_utf8/help/book/mods.html [new file with mode: 0644]
lang/ja_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/ja_utf8/help/book/summary.html [new file with mode: 0644]
lang/nl_utf8/book.php [new file with mode: 0644]
lang/nl_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/nl_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/nl_utf8/help/book/edit.html [new file with mode: 0644]
lang/nl_utf8/help/book/faq.html [new file with mode: 0644]
lang/nl_utf8/help/book/import.html [new file with mode: 0644]
lang/nl_utf8/help/book/index.html [new file with mode: 0644]
lang/nl_utf8/help/book/mods.html [new file with mode: 0644]
lang/nl_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/nl_utf8/help/book/summary.html [new file with mode: 0644]
lang/pl_utf8/book.php [new file with mode: 0644]
lang/pl_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/pl_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/pl_utf8/help/book/edit.html [new file with mode: 0644]
lang/pl_utf8/help/book/faq.html [new file with mode: 0644]
lang/pl_utf8/help/book/import.html [new file with mode: 0644]
lang/pl_utf8/help/book/index.html [new file with mode: 0644]
lang/pl_utf8/help/book/mods.html [new file with mode: 0644]
lang/pl_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/pl_utf8/help/book/summary.html [new file with mode: 0644]
lang/pt_br_utf8/book.php [new file with mode: 0644]
lang/pt_br_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/edit.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/faq.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/import.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/index.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/mods.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/pt_br_utf8/help/book/summary.html [new file with mode: 0644]
lang/sk_utf8/book.php [new file with mode: 0644]
lang/sk_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/sk_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/sk_utf8/help/book/edit.html [new file with mode: 0644]
lang/sk_utf8/help/book/faq.html [new file with mode: 0644]
lang/sk_utf8/help/book/import.html [new file with mode: 0644]
lang/sk_utf8/help/book/index.html [new file with mode: 0644]
lang/sk_utf8/help/book/mods.html [new file with mode: 0644]
lang/sk_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/sk_utf8/help/book/summary.html [new file with mode: 0644]
lang/sv_utf8/book.php [new file with mode: 0644]
lang/sv_utf8/help/book/customtitles.html [new file with mode: 0644]
lang/sv_utf8/help/book/disableprinting.html [new file with mode: 0644]
lang/sv_utf8/help/book/edit.html [new file with mode: 0644]
lang/sv_utf8/help/book/faq.html [new file with mode: 0644]
lang/sv_utf8/help/book/import.html [new file with mode: 0644]
lang/sv_utf8/help/book/index.html [new file with mode: 0644]
lang/sv_utf8/help/book/mods.html [new file with mode: 0644]
lang/sv_utf8/help/book/numberingtype.html [new file with mode: 0644]
lang/sv_utf8/help/book/summary.html [new file with mode: 0644]
lib.php [new file with mode: 0644]
mod.html [new file with mode: 0644]
move.php [new file with mode: 0644]
pix/add.gif [new file with mode: 0644]
pix/nav_exit.gif [new file with mode: 0644]
pix/nav_next.gif [new file with mode: 0644]
pix/nav_prev.gif [new file with mode: 0644]
pix/nav_prev_dis.gif [new file with mode: 0644]
pix/nav_sep.gif [new file with mode: 0644]
pix/print_book.gif [new file with mode: 0644]
pix/print_chapter.gif [new file with mode: 0644]
print.php [new file with mode: 0644]
restorelib.php [new file with mode: 0644]
show.php [new file with mode: 0644]
teacheraccess.php [new file with mode: 0644]
toc.php [new file with mode: 0644]
version.php [new file with mode: 0644]
view.php [new file with mode: 0644]

diff --git a/README.txt b/README.txt
new file mode 100644 (file)
index 0000000..3cd0ccb
--- /dev/null
@@ -0,0 +1,114 @@
+$Id: README.txt,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999-2004  Martin Dougiamas  http://dougiamas.com       //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// Book module original code                                             //
+// Copyright (C) 2004  Petr Skoda (petr.skoda@vslib.cz)                  //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// This program is free software; you can redistribute it and/or modify  //
+// it under the terms of the GNU General Public License as published by  //
+// the Free Software Foundation; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// This program is distributed in the hope that it will be useful,       //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of        //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
+// GNU General Public License for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+Book module for Moodle - version 1.1 (stable release)
+===============================================================================
+Created by:
+      Petr Skoda (skodak) - most of the coding & design
+      Mojmir Volf         - CSS formatted printer friendly format
+
+Developed for Technical University of Liberec (Czech Republic).
+Many ideas and code were taken from other Moodle modules and Moodle itself;-)
+
+Installation:
+    1/ upgrade your Moodle installation to version 1.5.1 or later
+       (you are advised to install latest official stable 1.5.2+ branch)
+    2/ download book.zip to your moodle/mod directory and unzip it there
+    3/ go to http://yoursite.com/admin - all necessary tables will be created
+
+
+List of features - version 1.2:
+
+    * easy to use - new teachers can quickly create multipage study materials
+    * two levels - only chapters and subchapters
+    * possible automatic chapter numbering
+    * chapters authored in build-in HTML editor (html stored in database,
+      images in course data)
+    * printing support - all chapters can be displayed on one CSS formatted page
+    * backup/restore with internal link preservation
+    * support for global searching in study materials (see contrib/search)
+    * import from html files (relinking of images, flash, Java applets and
+      relative links)
+    * works with MySQL and PostgreSQL databases
+    * no need to move language packs any more
+
+
+Intentionally omitted features:
+
+    * more chapter levels - it would encourage teachers to write too much
+      complex and long books, better use standard standalone HTML editor and
+      import it as Resource. DocBook format is another suitable solution.
+    * TOC hiding in normal view - instead use printer friendly view
+    * PDF export - there is no elegant way AFAIK to convert HTML to PDF,
+      use virtual PDF printer or better use DocBook format for authoring
+    * detailed student tracking (postponed till officially supported)
+    * export as zipped set of HTML pages - instead use browser command
+      Save page as... in print view
+
+Future:
+    * I like eXe editor, I would like to improve Book in this direction ... ;-)
+
+CHANGELOG:
+== 1.1    - 2005/01/01 =======================================================
+    * compatible ONLY with 1.4.3 and later!
+    * removed some unused searching stuff
+    * fixed headers in print.php
+== 1.1RC1 - 2004/11/15 =======================================================
+    * compatible ONLY with 1.4.2 and later !!!
+    * added sesskey for enhanced security
+    * navigation links do not enter hidden chapters
+    * import - correct linking when slasharguments are off
+    * removed coursefiles.php
+== 1.2RC - 2005/07/13 ==========================================================
+    * compatible with 1.5.1 + only
+    * improved restore
+    * fixed selection of directories for import
+    * html editor for summary
+    * fixed postgresql upgrade
+    * no need to move language packs
+== 1.2 - 2003/03/11 ==========================================================
+    * removed 64kB page content limit in mysql
+    * exit button now goes to course section anchor
+    * chater title now in browser title bar
+    * added translations be and sv
+    * during import chapters with names "*_sub.htm?" are imported as subchapters
+    * deleting in import selection windows now works
+    * last version before transition to 1.6
+== 1.3alpha - 2003/03/12 ======================================================
+    * compatible with 1.6dev only, use previous version for 1.5.x
+    * unicode upgrade supported - not much tested
+    * backup fixes - from Penny Leach, thanks!
+    * all languages converted to utf-8
+    * moved to contrib/book_16 directory
+    * added proper content encoding conversion during import
+
+skodak
diff --git a/backuplib.php b/backuplib.php
new file mode 100644 (file)
index 0000000..85fc7d7
--- /dev/null
@@ -0,0 +1,157 @@
+<?PHP // $Id: backuplib.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+    //This php script contains all the stuff to backup/restore
+    //book mods
+
+    //This is the 'graphical' structure of the book mod:
+    //
+    //                       book
+    //                     (CL,pk->id)
+    //                        |
+    //                        |
+    //                        |
+    //                     book_chapters
+    //               (CL,pk->id, fk->bookid)
+    //
+    // Meaning: pk->primary key field of the table
+    //          fk->foreign key to link with parent
+    //          nt->nested field (recursive data)
+    //          CL->course level info
+    //          UL->user level info
+    //          files->table may have files)
+    //
+    //-----------------------------------------------------------
+
+    //This function executes all the backup procedure about this mod
+    function book_backup_mods($bf,$preferences) {
+        global $CFG;
+
+        $status = true;
+
+        ////Iterate over book table
+        if ($books = get_records ('book', 'course', $preferences->backup_course, 'id')) {
+            foreach ($books as $book) {
+                if (backup_mod_selected($preferences,'book',$book->id)) {
+                    $status = book_backup_one_mod($bf,$preferences,$book);
+                }
+            }
+        }
+        return $status;
+    }
+
+    function book_backup_one_mod($bf,$preferences,$book) {
+
+        global $CFG;
+
+        if (is_numeric($book)) {
+            $book = get_record('book','id',$book);
+        }
+
+        $status = true;
+
+        //Start mod
+        fwrite ($bf,start_tag('MOD',3,true));
+        //Print book data
+        fwrite ($bf,full_tag('ID',4,false,$book->id));
+        fwrite ($bf,full_tag('MODTYPE',4,false,'book'));
+        fwrite ($bf,full_tag('NAME',4,false,$book->name));
+        fwrite ($bf,full_tag('SUMMARY',4,false,$book->summary));
+        fwrite ($bf,full_tag('NUMBERING',4,false,$book->numbering));
+        fwrite ($bf,full_tag('DISABLEPRINTING',4,false,$book->disableprinting));
+        fwrite ($bf,full_tag('CUSTOMTITLES',4,false,$book->customtitles));
+        fwrite ($bf,full_tag('TIMECREATED',4,false,$book->timecreated));
+        fwrite ($bf,full_tag('TIMEMODIFIED',4,false,$book->timemodified));
+        //back up the chapters
+        $status = backup_book_chapters($bf,$preferences,$book);
+        //End mod
+        $status = fwrite($bf,end_tag('MOD',3,true));
+
+        return $status;
+    }
+
+    //Backup book_chapters contents (executed from book_backup_mods)
+    function backup_book_chapters($bf,$preferences,$book) {
+
+        global $CFG;
+
+        $status = true;
+        //Print book's chapters
+        if ($chapters = get_records('book_chapters', 'bookid', $book->id, 'id')) {
+            //Write start tag
+            $status =fwrite ($bf,start_tag('CHAPTERS',4,true));
+            foreach ($chapters as $ch) {
+                //Start chapter
+                fwrite ($bf,start_tag('CHAPTER',5,true));
+                //Print chapter data
+                fwrite ($bf,full_tag('ID',6,false,$ch->id));
+                fwrite ($bf,full_tag('PAGENUM',6,false,$ch->pagenum));
+                fwrite ($bf,full_tag('SUBCHAPTER',6,false,$ch->subchapter));
+                fwrite ($bf,full_tag('TITLE',6,false,$ch->title));
+                fwrite ($bf,full_tag('CONTENT',6,false,$ch->content));
+                fwrite ($bf,full_tag('HIDDEN',6,false,$ch->hidden));
+                fwrite ($bf,full_tag('TIMECREATED',6,false,$ch->timecreated));
+                fwrite ($bf,full_tag('TIMEMODIFIED',6,false,$ch->timemodified));
+                fwrite ($bf,full_tag('IMPORTSRC',6,false,$ch->importsrc));
+                //End chapter
+                $status = fwrite ($bf,end_tag('CHAPTER',5,true));
+            }
+            //Write end tag
+            $status = fwrite ($bf,end_tag('CHAPTERS',4,true));
+        }
+        return $status;
+    }
+
+    //Return a content encoded to support interactivities linking. Every module
+    //should have its own. They are called automatically from the backup procedure.
+    function book_encode_content_links ($content,$preferences) {
+
+        global $CFG;
+
+        $base = preg_quote($CFG->wwwroot,"/");
+
+        $result = $content;
+
+        //Link to the list of books
+        $buscar="/(".$base."\/mod\/book\/index.php\?id\=)([0-9]+)/";
+        $result= preg_replace($buscar,'$@BOOKINDEX*$2@$',$result);
+
+        //Link to book's specific chapter
+        $buscar="/(".$base."\/mod\/book\/view.php\?id\=)([0-9]+)\&chapterid\=([0-9]+)/";
+        $result= preg_replace($buscar,'$@BOOKCHAPTER*$2*$3@$',$result);
+
+        //Link to book's first chapter
+        $buscar="/(".$base."\/mod\/book\/view.php\?id\=)([0-9]+)/";
+        $result= preg_replace($buscar,'$@BOOKSTART*$2@$',$result);
+
+        return $result;
+    }
+
+
+    ////Return an array of info (name,value)
+    function book_check_backup_mods($course,$user_data=false,$backup_unique_code,$instances=null) {
+
+        if (!empty($instances) && is_array($instances) && count($instances)) {
+            $info = array();
+            foreach ($instances as $id => $instance) {
+                $info += book_check_backup_mods_instances($instance,$backup_unique_code);
+            }
+            return $info;
+        }
+
+         //First the course data
+         $info[0][0] = get_string('modulenameplural','book');
+         $info[0][1] = count_records('book', 'course', $course);
+
+         //No user data for books ;-)
+
+         return $info;
+    }
+
+    ////Return an array of info (name,value)
+    function book_check_backup_mods_instances($instance,$backup_unique_code) {
+         $info[$instance->id.'0'][0] = '<b>'.$instance->name.'</b>';
+         $info[$instance->id.'0'][1] = '';
+
+         return $info;
+    }
+
+?>
diff --git a/book_print.css b/book_print.css
new file mode 100644 (file)
index 0000000..6fe10d6
--- /dev/null
@@ -0,0 +1,159 @@
+/* $Id: book_print.css,v 1.1 2006/03/12 18:39:59 skodak Exp $ */
+
+h1, h2, h3, h4, h5, h6 {
+    margin-left: 0px;
+    font-family: "Times New Roman", Times, serif;
+    page-break-after: avoid;
+    page-break-inside: avoid;
+}
+
+.book_title {
+    margin-left: -40px;
+    font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+    font-size: 3em;
+    font-weight: bold;
+    margin-top: 120px;
+    margin-bottom: 30px;
+    text-align: center;
+}
+
+.book_summary {
+    margin-left: -40px;
+    text-align: center;
+    margin-bottom: 120px;
+}
+
+.book_chapter_title {
+    font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+    text-align: left;
+    font-size: 1.7em;
+    font-weight: bold;
+
+    border-style: solid;
+    border-top-width: 0px;
+    border-right-width: 0px;
+    border-bottom-width: 1px;
+    border-left-width: 0px;
+
+    margin-left: -40px;
+    margin-left: 0px;
+    margin-bottom: 20px;
+}
+
+.book_chapter {
+    page-break-before: always;
+}
+
+body {
+    margin-left: 50px;
+    margin-right: 10px;
+    color: #000000;
+    background-color: #FFFFFF;
+    font-family: "Times New Roman", Times, serif;
+    font-size: 1em;
+    font-weight: normal;
+    text-decoration: none;
+}
+
+/* link rewriting for mozilla - collides with filters :-( */
+/*
+a[href^="http://"]:after, a[href^="ftp://"]:after {
+    content: " ["attr(href)"]";
+}
+*/
+
+/* just some hack - ignore user defined <font> */
+font {
+    color: #000000;
+    background-color: #EEEEEE;
+    font-family: "Times New Roman", Times, serif;
+    font-size: 1em;
+    font-weight: normal;
+    text-decoration: none;
+}
+
+/* ===== TOC numbering styles ===== */
+
+/* numbering == NONE */
+.book_toc_none {
+    page-break-before: always;
+}
+.book_toc_none ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_none ul ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_none li {
+    margin-top: 10px;
+    list-style: none;
+}
+.book_toc_none li li {
+    margin-top: 0px;
+    list-style: none;
+}
+
+/* numbering == NUMBERED */
+.book_toc_numbered {
+    page-break-before: always;
+}
+.book_toc_numbered ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_numbered ul ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_numbered li {
+    margin-top: 10px;
+    list-style: none;
+}
+.book_toc_numbered li li {
+    margin-top: 0px;
+    list-style: none;
+}
+
+/* numbering == BULLETS */
+.book_toc_bullets {
+    page-break-before: always;
+}
+.book_toc_bullets ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_bullets ul ul {
+    margin-left: 20px;
+    padding-left: 0px;
+}
+.book_toc_bullets li {
+    margin-top: 10px;
+    list-style: none;
+}
+.book_toc_bullets li li {
+    margin-top: 0px;
+    list-style: circle;
+}
+
+/* numbering == INDENTED */
+.book_toc_indented {
+    page-break-before: always;
+}
+.book_toc_indented ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_indented ul ul {
+    margin-left: 20px;
+    padding-left: 0px;
+}
+.book_toc_indented li {
+    margin-top: 10px;
+    list-style: none;
+}
+.book_toc_indented li li {
+    margin-top: 0px;
+    list-style: none;
+}
diff --git a/book_theme.css b/book_theme.css
new file mode 100644 (file)
index 0000000..84005bf
--- /dev/null
@@ -0,0 +1,94 @@
+/* $Id: book_theme.css,v 1.1 2006/03/12 18:39:59 skodak Exp $*/
+/* later should be defined in themes*/
+
+
+.book_chapter_title {
+    font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+    text-align: left;
+    font-size: large;
+    font-weight: bold;
+
+    margin-left: 0px;
+    margin-bottom: 20px;
+}
+
+.book_content {
+    text-align: left;
+}
+
+/* == TOC styles == */
+
+/* toc style NONE */
+.book_toc_none ul {
+    margin-left: 5px;
+    padding-left: 0px;
+}
+.book_toc_none ul ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_none li {
+    margin-top: 5px;
+    list-style: none;
+}
+.book_toc_none li li {
+    margin-top: 0px;
+    list-style: none;
+}
+
+
+/* toc style NUMBERED */
+.book_toc_numbered ul {
+    margin-left: 5px;
+    padding-left: 0px;
+}
+.book_toc_numbered ul ul {
+    margin-left: 0px;
+    padding-left: 0px;
+}
+.book_toc_numbered li {
+    margin-top: 5px;
+    list-style: none;
+}
+.book_toc_numbered li li {
+    margin-top: 0px;
+    list-style: none;
+}
+
+
+/*toc style BULLETS */
+.book_toc_bullets ul {
+    margin-left: 5px;
+    padding-left: 0px;
+}
+.book_toc_bullets ul ul {
+    margin-left: 20px;
+    padding-left: 0px;
+}
+.book_toc_bullets li {
+    margin-top: 5px;
+    list-style: none;
+}
+.book_toc_bullets li li {
+    margin-top: 0px;
+    list-style: circle;
+}
+
+
+/* toc style INDENTED*/
+.book_toc_indented ul {
+    margin-left: 5px;
+    padding-left: 0px;
+}
+.book_toc_indented ul ul {
+    margin-left: 15px;
+    padding-left: 0px;
+}
+.book_toc_indented li {
+    margin-top: 5px;
+    list-style: none;
+}
+.book_toc_indented li li {
+    margin-top: 0px;
+    list-style: none;
+}
diff --git a/config.html b/config.html
new file mode 100644 (file)
index 0000000..8769eb9
--- /dev/null
@@ -0,0 +1,30 @@
+<!-- $Id: config.html,v 1.1 2006/03/12 18:39:59 skodak Exp $ //-->
+
+<form method="post" action="module.php" name="form">
+<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
+
+<table cellpadding="9" cellspacing="0">
+<tr valign="top">
+    <td align="right">
+        <p>book_tocwidth:</p>
+    </td>
+    <td>
+        <?php
+        $choices = array('140'=>'140', '160'=>'160', '180'=>'180', '200'=>'200',
+                         '220'=>'220', '240'=>'240', '260'=>'260', '280'=>'280', '300'=>'300');
+        choose_from_menu ($choices, 'book_tocwidth', $CFG->book_tocwidth, '');
+        ?>
+    </td>
+    <td>
+        <?php print_string('tocwidth', 'book') ?>
+    </td>
+</tr>
+
+<tr>
+    <td colspan="3" align="center">
+        <input type="submit" value="<?php print_string('savechanges') ?>" />
+    </td>
+</tr>
+</table>
+
+</form>
diff --git a/coursefiles.php b/coursefiles.php
new file mode 100644 (file)
index 0000000..fc2e85a
--- /dev/null
@@ -0,0 +1,842 @@
+<?php // $Id: coursefiles.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+//  Manage all uploaded files in a course file area
+
+//  All the Moodle-specific stuff is in this top section
+//  Configuration and access control occurs here.
+//  Must define:  USER, basedir, baseweb, html_header and html_footer
+//  USER is a persistent variable using sessions
+
+    require('../../config.php');
+    require($CFG->libdir.'/filelib.php');
+
+    $id      = required_param('id', PARAM_INT);
+    $file    = optional_param('file', '', PARAM_PATH);
+    $wdir    = optional_param('wdir', '', PARAM_PATH);
+    $action  = optional_param('action', '', PARAM_ACTION);
+    $name    = optional_param('name', '', PARAM_FILE);
+    $oldname = optional_param('oldname', '', PARAM_FILE);
+    $choose  = required_param('choose', PARAM_CLEAN);
+
+    if ($choose) {
+        if (count(explode('.', $choose)) != 2) {
+            error('Incorrect format for choose parameter');
+        }
+    }
+
+
+    if (! $course = get_record("course", "id", $id) ) {
+        error("That's an invalid course id");
+    }
+
+    require_login($course->id);
+
+    if (! isteacheredit($course->id) ) {
+        error("You need to be a teacher with editing privileges");
+    }
+
+    function html_footer() {
+
+        global $course, $choose;
+
+        if ($choose) {
+            echo "</td></tr></table></body></html>";
+        } else {
+            echo "</td></tr></table></body></html>";
+            print_footer($course);
+        }
+    }
+    
+    function html_header($course, $wdir, $formfield=""){
+        global $CFG, $ME, $choose;
+
+        if (! $site = get_site()) {
+            error("Invalid site!");
+        }
+
+        if ($course->id == $site->id) {
+            $strfiles = get_string("sitefiles");
+        } else {
+            $strfiles = get_string("files");
+        }
+
+        if ($wdir == "/") {
+            $fullnav = "$strfiles";
+        } else {
+            $dirs = explode("/", $wdir);
+            $numdirs = count($dirs);
+            $link = "";
+            $navigation = "";
+            for ($i=1; $i<$numdirs-1; $i++) {
+               $navigation .= " -> ";
+               $link .= "/".urlencode($dirs[$i]);
+               $navigation .= "<a href=\"".$ME."?id=$course->id&amp;wdir=$link&amp;choose=$choose\">".$dirs[$i]."</a>";
+            }
+            $fullnav = "<a href=\"".$ME."?id=$course->id&amp;wdir=/&amp;choose=$choose\">$strfiles</a> $navigation -> ".$dirs[$numdirs-1];
+        }
+
+
+        if ($choose) {
+            print_header();
+
+            $chooseparts = explode('.', $choose);
+
+            ?>
+            <script language="javascript" type="text/javascript">
+            <!--
+            function set_value(txt) {
+                opener.document.forms['<?php echo $chooseparts[0]."'].".$chooseparts[1] ?>.value = txt;
+                window.close();
+            }
+            -->
+            </script>
+
+            <?php
+            $fullnav = str_replace('->', '&raquo;', "$course->shortname -> $fullnav");
+            echo '<div id="nav-bar">'.$fullnav.'</div>';
+
+            if ($course->id == $site->id) {
+                print_heading(get_string("publicsitefileswarning"), "center", 2);
+            }
+
+        } else {
+
+            if ($course->id == $site->id) {
+                print_header("$course->shortname: $strfiles", "$course->fullname",
+                             "<a href=\"../$CFG->admin/index.php\">".get_string("administration").
+                             "</a> -> $fullnav", $formfield);
+
+                print_heading(get_string("publicsitefileswarning"), "center", 2);
+
+            } else {
+                print_header("$course->shortname: $strfiles", "$course->fullname",
+                             "<a href=\"../course/view.php?id=$course->id\">$course->shortname".
+                             "</a> -> $fullnav", $formfield);
+            }
+        }
+
+
+        echo "<table border=\"0\" align=\"center\" cellspacing=\"3\" cellpadding=\"3\" width=\"640\">";
+        echo "<tr>";
+        echo "<td colspan=\"2\">";
+
+    }
+
+
+    if (! $basedir = make_upload_directory("$course->id")) {
+        error("The site administrator needs to fix the file permissions");
+    }
+
+    $baseweb = $CFG->wwwroot;
+
+//  End of configuration and access control
+
+
+    if (!$wdir) {
+        $wdir="/";
+    }
+
+    if (($wdir != '/' and detect_munged_arguments($wdir, 0))
+      or ($file != '' and detect_munged_arguments($file, 0))) {
+        $message = "Error: Directories can not contain \"..\"";
+        $wdir = "/";
+        $action = "";
+    }
+
+    if ($wdir == "/backupdata") {
+        if (! make_upload_directory("$course->id/backupdata")) {   // Backup folder
+            error("Could not create backupdata folder.  The site administrator needs to fix the file permissions");
+        }
+    }
+
+    switch ($action) {
+
+        case "upload":
+            html_header($course, $wdir);
+            require_once($CFG->dirroot.'/lib/uploadlib.php');
+                
+            if (!empty($save) and confirm_sesskey()) {
+                $course->maxbytes = 0;  // We are ignoring course limits
+                $um = new upload_manager('userfile',false,false,$course,false,0);
+                $dir = "$basedir$wdir";
+                if ($um->process_file_uploads($dir)) {
+                    notify(get_string('uploadedfile'));
+                }
+                // um will take care of error reporting.
+                displaydir($wdir);
+            } else {
+                $upload_max_filesize = get_max_upload_file_size($CFG->maxbytes);
+                $filesize = display_size($upload_max_filesize);
+
+                $struploadafile = get_string("uploadafile");
+                $struploadthisfile = get_string("uploadthisfile");
+                $strmaxsize = get_string("maxsize", "", $filesize);
+                $strcancel = get_string("cancel");
+
+                echo "<p>$struploadafile ($strmaxsize) --> <b>$wdir</b>";
+                echo "<table><tr><td colspan=\"2\">";
+                echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"coursefiles.php\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"upload\" />";
+                echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+                upload_print_form_fragment(1,array('userfile'),null,false,null,$upload_max_filesize,0,false);
+                echo " </td><tr><td width=\"10\">";
+                echo " <input type=\"submit\" name=\"save\" value=\"$struploadthisfile\" />";
+                echo "</form>";
+                echo "</td><td width=\"100%\">";
+                echo "<form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"$strcancel\" />";
+                echo "</form>";
+                echo "</td></tr></table>";
+            }
+            html_footer();
+            break;
+
+        case "delete":
+            if (!empty($confirm) and confirm_sesskey()) {
+                html_header($course, $wdir);
+                foreach ($USER->filelist as $file) {
+                    $fullfile = $basedir.$file;
+                    if (! fulldelete($fullfile)) {
+                        echo "<br />Error: Could not delete: $fullfile";
+                    }
+                }
+                clearfilelist();
+                displaydir($wdir);
+                html_footer();
+
+            } else {
+                html_header($course, $wdir);
+                if (setfilelist($_POST)) {
+                    echo "<p align=\"center\">".get_string("deletecheckwarning").":</p>";
+                    print_simple_box_start("center");
+                    printfilelist($USER->filelist);
+                    print_simple_box_end();
+                    echo "<br />";
+                    notice_yesno (get_string("deletecheckfiles"), 
+                                "coursefiles.php?id=$id&amp;wdir=$wdir&amp;action=delete&amp;confirm=1&amp;sesskey=$USER->sesskey&amp;choose=$choose",
+                                "coursefiles.php?id=$id&amp;wdir=$wdir&amp;action=cancel&amp;choose=$choose");
+                } else {
+                    displaydir($wdir);
+                }
+                html_footer();
+            }
+            break;
+
+        case "move":
+            html_header($course, $wdir);
+            if (($count = setfilelist($_POST)) and confirm_sesskey()) {
+                $USER->fileop     = $action;
+                $USER->filesource = $wdir;
+                echo "<p align=\"center\">";
+                print_string("selectednowmove", "moodle", $count);
+                echo "</p>";
+            }
+            displaydir($wdir);
+            html_footer();
+            break;
+
+        case "paste":
+            html_header($course, $wdir);
+            if (isset($USER->fileop) and ($USER->fileop == "move") and confirm_sesskey()) {
+                foreach ($USER->filelist as $file) {
+                    $shortfile = basename($file);
+                    $oldfile = $basedir.$file;
+                    $newfile = $basedir.$wdir."/".$shortfile;
+                    if (!rename($oldfile, $newfile)) {
+                        echo "<p>Error: $shortfile not moved";
+                    }
+                }
+            }
+            clearfilelist();
+            displaydir($wdir);
+            html_footer();
+            break;
+
+        case "rename":
+            if (!empty($name) and confirm_sesskey()) {
+                html_header($course, $wdir);
+                $name = clean_filename($name);
+                if (file_exists($basedir.$wdir."/".$name)) {
+                    echo "Error: $name already exists!";
+                } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) {
+                    echo "Error: could not rename $oldname to $name";
+                }
+                displaydir($wdir);
+                    
+            } else {
+                $strrename = get_string("rename");
+                $strcancel = get_string("cancel");
+                $strrenamefileto = get_string("renamefileto", "moodle", $file);
+                html_header($course, $wdir, "form.name");
+                echo "<p>$strrenamefileto:";
+                echo "<table><tr><td>";
+                echo "<form action=\"coursefiles.php\" method=\"post\" name=\"form\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"rename\" />";
+                echo " <input type=\"hidden\" name=\"oldname\" value=\"$file\" />";
+                echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+                echo " <input type=\"text\" name=\"name\" size=\"35\" value=\"$file\" />";
+                echo " <input type=\"submit\" value=\"$strrename\" />";
+                echo "</form>";
+                echo "</td><td>";
+                echo "<form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"$strcancel\" />";
+                echo "</form>";
+                echo "</td></tr></table>";
+            }
+            html_footer();
+            break;
+
+        case "mkdir":
+            if (!empty($name) and confirm_sesskey()) {
+                html_header($course, $wdir);
+                $name = clean_filename($name);
+                if (file_exists("$basedir$wdir/$name")) {
+                    echo "Error: $name already exists!";
+                } else if (! make_upload_directory("$course->id/$wdir/$name")) {
+                    echo "Error: could not create $name";
+                }
+                displaydir($wdir);
+                    
+            } else {
+                $strcreate = get_string("create");
+                $strcancel = get_string("cancel");
+                $strcreatefolder = get_string("createfolder", "moodle", $wdir);
+                html_header($course, $wdir, "form.name");
+                echo "<p>$strcreatefolder:";
+                echo "<table><tr><td>";
+                echo "<form action=\"coursefiles.php\" method=\"post\" name=\"form\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"mkdir\" />";
+                echo " <input type=\"text\" name=\"name\" size=\"35\" />";
+                echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+                echo " <input type=\"submit\" value=\"$strcreate\" />";
+                echo "</form>";
+                echo "</td><td>";
+                echo "<form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"$strcancel\" />";
+                echo "</form>";
+                echo "</td></tr></table>";
+            }
+            html_footer();
+            break;
+
+        case "edit":
+            html_header($course, $wdir);
+            if (isset($text) and confirm_sesskey()) {
+                $fileptr = fopen($basedir.$file,"w");
+                fputs($fileptr, stripslashes($text));
+                fclose($fileptr);
+                displaydir($wdir);
+                    
+            } else {
+                $streditfile = get_string("edit", "", "<b>$file</b>");
+                $fileptr  = fopen($basedir.$file, "r");
+                $contents = fread($fileptr, filesize($basedir.$file));
+                fclose($fileptr);
+
+                if (mimeinfo("type", $file) == "text/html") {
+                    $usehtmleditor = can_use_html_editor();
+                } else {
+                    $usehtmleditor = false;
+                }
+                $usehtmleditor = false;    // Always keep it off for now
+
+                print_heading("$streditfile");
+
+                echo "<table><tr><td colspan=\"2\">";
+                echo "<form action=\"coursefiles.php\" method=\"post\" name=\"form\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"file\" value=\"$file\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"edit\" />";
+                echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+                print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents);
+                echo "</td></tr><tr><td>";
+                echo " <input type=\"submit\" value=\"".get_string("savechanges")."\" />";
+                echo "</form>";
+                echo "</td><td>";
+                echo "<form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"".get_string("cancel")."\" />";
+                echo "</form>";
+                echo "</td></tr></table>";
+
+                if ($usehtmleditor) { 
+                    use_html_editor();
+                }
+
+
+            }
+            html_footer();
+            break;
+
+        case "zip":
+            if (!empty($name) and confirm_sesskey()) {
+                html_header($course, $wdir);
+                $name = clean_filename($name);
+
+                $files = array();
+                foreach ($USER->filelist as $file) {
+                   $files[] = "$basedir/$file";
+                }
+
+                if (!zip_files($files,"$basedir/$wdir/$name")) {
+                    error(get_string("zipfileserror","error"));
+                }
+
+                clearfilelist();
+                displaydir($wdir);
+                    
+            } else {
+                html_header($course, $wdir, "form.name");
+
+                if (setfilelist($_POST)) {
+                    echo "<p align=\"center\">".get_string("youareabouttocreatezip").":</p>";
+                    print_simple_box_start("center");
+                    printfilelist($USER->filelist);
+                    print_simple_box_end();
+                    echo "<br />";
+                    echo "<p align=\"center\">".get_string("whattocallzip");
+                    echo "<table><tr><td>";
+                    echo "<form action=\"coursefiles.php\" method=\"post\" name=\"form\">";
+                    echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                    echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                    echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                    echo " <input type=\"hidden\" name=\"action\" value=\"zip\" />";
+                    echo " <input type=\"text\" name=\"name\" size=\"35\" value=\"new.zip\" />";
+                    echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+                    echo " <input type=\"submit\" value=\"".get_string("createziparchive")."\" />";
+                    echo "</form>";
+                    echo "</td><td>";
+                    echo "<form action=\"coursefiles.php\" method=\"get\">";
+                    echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                    echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                    echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                    echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                    echo " <input type=\"submit\" value=\"".get_string("cancel")."\" />";
+                    echo "</form>";
+                    echo "</td></tr></table>";
+                } else {
+                    displaydir($wdir);
+                    clearfilelist();
+                }
+            }
+            html_footer();
+            break;
+
+        case "unzip":
+            html_header($course, $wdir);
+            if (!empty($file) and confirm_sesskey()) {
+                $strok = get_string("ok");
+                $strunpacking = get_string("unpacking", "", $file);
+
+                echo "<p align=\"center\">$strunpacking:</p>";
+
+                $file = basename($file);
+
+                if (!unzip_file("$basedir/$wdir/$file")) {
+                    error(get_string("unzipfileserror","error"));
+                }
+
+                echo "<center><form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"$strok\" />";
+                echo "</form>";
+                echo "</center>";
+            } else {
+                displaydir($wdir);
+            }
+            html_footer();
+            break;
+
+        case "listzip":
+            html_header($course, $wdir);
+            if (!empty($file) and confirm_sesskey()) {
+                $strname = get_string("name");
+                $strsize = get_string("size");
+                $strmodified = get_string("modified");
+                $strok = get_string("ok");
+                $strlistfiles = get_string("listfiles", "", $file);
+
+                echo "<p align=\"center\">$strlistfiles:</p>";
+                $file = basename($file);
+
+                include_once("$CFG->libdir/pclzip/pclzip.lib.php");
+                $archive = new PclZip(cleardoubleslashes("$basedir/$wdir/$file"));
+                if (!$list = $archive->listContent(cleardoubleslashes("$basedir/$wdir"))) {
+                    notify($archive->errorInfo(true));
+
+                } else {
+                    echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=\"640\" class=\"files\">";
+                    echo "<tr class=\"file\"><th align=\"left\" class=\"header name\">$strname</th><th align=\"right\" class=\"header size\">$strsize</th><th align=\"right\" class=\"header date\">$strmodified</th></tr>";
+                    foreach ($list as $item) {
+                        echo "<tr>";
+                        print_cell("left", $item['filename'], 'name');
+                        if (! $item['folder']) {
+                            print_cell("right", display_size($item['size']), 'size');
+                        } else {
+                            echo "<td>&nbsp;</td>";
+                        }
+                        $filedate  = userdate($item['mtime'], get_string("strftimedatetime"));
+                        print_cell("right", $filedate, 'date');
+                        echo "</tr>";
+                    }
+                    echo "</table>";
+                }
+                echo "<br /><center><form action=\"coursefiles.php\" method=\"get\">";
+                echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+                echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+                echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+                echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
+                echo " <input type=\"submit\" value=\"$strok\" />";
+                echo "</form>";
+                echo "</center>";
+            } else {
+                displaydir($wdir);
+            }
+            html_footer();
+            break;
+
+        case "restore":
+            html_header($course, $wdir);
+            if (!empty($file) and confirm_sesskey()) {
+                echo "<p align=\"center\">".get_string("youaregoingtorestorefrom").":</p>";
+                print_simple_box_start("center");
+                echo $file;
+                print_simple_box_end();
+                echo "<br />";
+                echo "<p align=\"center\">".get_string("areyousuretorestorethisinfo")."</p>";
+                $restore_path = "$CFG->wwwroot/backup/restore.php";
+                notice_yesno (get_string("areyousuretorestorethis"),
+                                $restore_path."?id=".$id."&amp;file=".cleardoubleslashes($id.$wdir."/".$file),
+                                "coursefiles.php?id=$id&amp;wdir=$wdir&amp;action=cancel");
+            } else {
+                displaydir($wdir);
+            }
+            html_footer();
+            break;
+          
+        case "cancel":
+            clearfilelist();
+
+        default:
+            html_header($course, $wdir);
+            displaydir($wdir);
+            html_footer();
+            break;
+}
+
+
+/// FILE FUNCTIONS ///////////////////////////////////////////////////////////
+
+
+function setfilelist($VARS) {
+    global $USER;
+
+    $USER->filelist = array ();
+    $USER->fileop = "";
+
+    $count = 0;
+    foreach ($VARS as $key => $val) {
+        if (substr($key,0,4) == "file") {
+            $count++;
+            $val = rawurldecode($val);
+            if (!detect_munged_arguments($val, 0)) {
+                $USER->filelist[] = $val;
+            }
+        }
+    }
+    return $count;
+}
+
+function clearfilelist() {
+    global $USER;
+
+    $USER->filelist = array ();
+    $USER->fileop = "";
+}
+
+
+function printfilelist($filelist) {
+    global $CFG, $basedir;
+
+    foreach ($filelist as $file) {
+        if (is_dir($basedir.$file)) {
+            echo "<img src=\"$CFG->pixpath/f/folder.gif\" height=\"16\" width=\"16\" alt=\"\" /> $file<br />";
+            $subfilelist = array();
+            $currdir = opendir($basedir.$file);
+            while (false !== ($subfile = readdir($currdir))) {
+                if ($subfile <> ".." && $subfile <> ".") {
+                    $subfilelist[] = $file."/".$subfile;
+                }
+            }
+            printfilelist($subfilelist);
+
+        } else { 
+            $icon = mimeinfo("icon", $file);
+            echo "<img src=\"$CFG->pixpath/f/$icon\"  height=\"16\" width=\"16\" alt=\"\" /> $file<br />";
+        }
+    }
+}
+
+
+function print_cell($alignment='center', $text='&nbsp;', $class='') {
+    if ($class) {
+        $class = ' class="'.$class.'"';
+    }
+    echo '<td align="'.$alignment.'" nowrap="nowrap"'.$class.'>'.$text.'</td>';
+}
+
+function displaydir ($wdir) {
+//  $wdir == / or /a or /a/b/c/d  etc
+
+    global $basedir;
+    global $id;
+    global $USER, $CFG;
+    global $choose;
+
+    $fullpath = $basedir.$wdir;
+
+    $directory = opendir($fullpath);             // Find all files
+    while (false !== ($file = readdir($directory))) {
+        if ($file == "." || $file == "..") {
+            continue;
+        }
+        
+        if (is_dir($fullpath."/".$file)) {
+            $dirlist[] = $file;
+        } else {
+            $filelist[] = $file;
+        }
+    }
+    closedir($directory);
+
+    $strname = get_string("name");
+    $strsize = get_string("size");
+    $strmodified = get_string("modified");
+    $straction = get_string("action");
+    $strmakeafolder = get_string("makeafolder");
+    $struploadafile = get_string("uploadafile");
+    $strwithchosenfiles = get_string("withchosenfiles");
+    $strmovetoanotherfolder = get_string("movetoanotherfolder");
+    $strmovefilestohere = get_string("movefilestohere");
+    $strdeletecompletely = get_string("deletecompletely");
+    $strcreateziparchive = get_string("createziparchive");
+    $strrename = get_string("rename");
+    $stredit   = get_string("edit");
+    $strunzip  = get_string("unzip");
+    $strlist   = get_string("list");
+    $strrestore= get_string("restore");
+    $strchoose   = get_string("choose");
+
+
+    echo "<form action=\"coursefiles.php\" method=\"post\" name=\"dirform\">";
+    echo '<input type="hidden" name="choose" value="'.$choose.'">';
+    echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
+    echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"640\" class=\"files\">";    
+    echo "<tr>";
+    echo "<th width=\"5\"></th>";
+    echo "<th align=\"left\" class=\"header name\">$strname</th>";
+    echo "<th align=\"right\" class=\"header size\">$strsize</th>";
+    echo "<th align=\"right\" class=\"header date\">$strmodified</th>";
+    echo "<th align=\"right\" class=\"header commands\">$straction</th>";
+    echo "</tr>\n";
+
+    if ($wdir == "/") {
+        $wdir = "";
+    }
+    if (!empty($wdir)) {
+        $dirlist[] = '..';
+    }
+
+    $count = 0;
+
+    if (!empty($dirlist)) {
+        asort($dirlist);
+        foreach ($dirlist as $dir) {
+            echo "<tr class=\"folder\">";
+
+            $dirurl     = "$wdir/$dir";
+            if (substr($dirurl,0,1) == '/') {
+                $selectdir = substr($dirurl,1);
+            } else {
+                $selectdir = $dirurl;
+            }
+
+            if ($dir == '..') {
+                $fileurl = rawurlencode(dirname($wdir));
+                print_cell();
+                print_cell('left', '<a href="coursefiles.php?id='.$id.'&amp;wdir='.$fileurl.'&amp;choose='.$choose.'"><img src="'.$CFG->pixpath.'/f/parent.gif" height="16" width="16" alt="'.get_string('parentfolder').'" /></a> <a href="coursefiles.php?id='.$id.'&amp;wdir='.$fileurl.'&amp;choose='.$choose.'">'.get_string('parentfolder').'</a>', 'name');
+                print_cell();
+                print_cell();
+                print_cell();
+
+            } else {
+                $count++;
+                $filename = $fullpath."/".$dir;
+                $fileurl  = rawurlencode($wdir."/".$dir);
+                $filesafe = rawurlencode($dir);
+                $filesize = display_size(get_directory_size("$fullpath/$dir"));
+                $filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p");
+                print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\" />", 'checkbox');
+                print_cell("left", "<a href=\"coursefiles.php?id=$id&amp;wdir=$fileurl&amp;choose=$choose\"><img src=\"$CFG->pixpath/f/folder.gif\" height=\"16\" width=\"16\" border=\"0\" alt=\"Folder\" /></a> <a href=\"coursefiles.php?id=$id&amp;wdir=$fileurl&amp;choose=$choose\">".htmlspecialchars($dir)."</a>", 'name');
+                print_cell("right", $filesize, 'size');
+                print_cell("right", $filedate, 'date');
+                if ($choose) {
+                       $edittext = "<b><a onMouseDown=\"return set_value('$selectdir')\" href=\"\">$strchoose</a></b>&nbsp;";
+                   } else {
+                       $edittext = '';
+                   }
+                print_cell("right", "$edittext <a href=\"coursefiles.php?id=$id&amp;wdir=$wdir&amp;file=$filesafe&amp;action=rename&amp;choose=$choose\">$strrename</a>", 'commands');
+            }
+    
+            echo "</tr>";
+        }
+    }
+
+
+    if (!empty($filelist)) {
+        asort($filelist);
+        foreach ($filelist as $file) {
+
+            $icon = mimeinfo("icon", $file);
+
+            $count++;
+            $filename    = $fullpath."/".$file;
+            $fileurl     = "$wdir/$file";
+            $filesafe    = rawurlencode($file);
+            $fileurlsafe = rawurlencode($fileurl);
+            $filedate    = userdate(filemtime($filename), "%d %b %Y, %I:%M %p");
+
+            if (substr($fileurl,0,1) == '/') {
+                $selectfile = substr($fileurl,1);
+            } else {
+                $selectfile = $fileurl;
+            }
+
+            echo "<tr class=\"file\">";
+
+            print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\" />", 'checkbox');
+            echo "<td align=\"left\" nowrap=\"nowrap\" class=\"name\">";
+            if ($CFG->slasharguments) {
+                $ffurl = "/file.php/$id$fileurl";
+            } else {
+                $ffurl = "/file.php?file=/$id$fileurl";
+            }
+            link_to_popup_window ($ffurl, "display", 
+                                  "<img src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" border=\"0\" alt=\"File\" />", 
+                                  480, 640);
+            echo '&nbsp;';
+            link_to_popup_window ($ffurl, "display", 
+                                  htmlspecialchars($file),
+                                  480, 640);
+            echo "</td>";
+
+            $file_size = filesize($filename);
+            print_cell("right", display_size($file_size), 'size');
+            print_cell("right", $filedate, 'date');
+
+            if ($choose && $icon == "html.gif") {
+                $edittext = "<b><a onMouseDown=\"return set_value('$selectfile')\" href=\"\">$strchoose</a></b>&nbsp;";
+            } else {
+                $edittext = '';
+            }
+
+
+            if ($icon == "text.gif" || $icon == "html.gif") {
+                $edittext .= "<a href=\"coursefiles.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=edit&amp;choose=$choose\">$stredit</a>";
+            } else if ($icon == "zip.gif") {
+                $edittext .= "<a href=\"coursefiles.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=unzip&amp;sesskey=$USER->sesskey&amp;choose=$choose\">$strunzip</a>&nbsp;";
+                $edittext .= "<a href=\"coursefiles.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=listzip&amp;sesskey=$USER->sesskey&amp;choose=$choose\">$strlist</a> ";
+            }
+
+            print_cell("right", "$edittext <a href=\"coursefiles.php?id=$id&amp;wdir=$wdir&amp;file=$filesafe&amp;action=rename&amp;choose=$choose\">$strrename</a>", 'commands');
+    
+            echo "</tr>";
+        }
+    }
+    echo "</table>";
+    echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
+
+    if (empty($wdir)) {
+        $wdir = "/";
+    }
+
+    echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"640\">";    
+    echo "<tr><td>";
+    echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />";
+    echo '<input type="hidden" name="choose" value="'.$choose.'">';
+    echo "<input type=\"hidden\" name=\"wdir\" value=\"$wdir\" /> ";
+    echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+    $options = array (
+                   "move" => "$strmovetoanotherfolder",
+                   "delete" => "$strdeletecompletely",
+                   "zip" => "$strcreateziparchive"
+               );
+    if (!empty($count)) {
+        choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()");
+    }
+
+    echo "</form>";
+    echo "<td align=\"center\">";
+    if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) {
+        echo "<form action=\"coursefiles.php\" method=\"get\">";
+        echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+        echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+        echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+        echo " <input type=\"hidden\" name=\"action\" value=\"paste\" />";
+        echo " <input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
+        echo " <input type=\"submit\" value=\"$strmovefilestohere\" />";
+        echo "</form>";
+    }
+    echo "<td align=\"right\">";
+        echo "<form action=\"coursefiles.php\" method=\"get\">";
+        echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+        echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+        echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+        echo " <input type=\"hidden\" name=\"action\" value=\"mkdir\" />";
+        echo " <input type=\"submit\" value=\"$strmakeafolder\" />";
+        echo "</form>";
+    echo "</td>";
+    echo "<td align=\"right\">";
+        echo "<form action=\"coursefiles.php\" method=\"get\">";
+        echo ' <input type="hidden" name="choose" value="'.$choose.'">';
+        echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
+        echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
+        echo " <input type=\"hidden\" name=\"action\" value=\"upload\" />";
+        echo " <input type=\"submit\" value=\"$struploadafile\" />";
+        echo "</form>";
+    echo "</td></tr>";
+    echo "</table>";
+    echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
+
+}
+
+?>
diff --git a/db/migrate2utf8.php b/db/migrate2utf8.php
new file mode 100755 (executable)
index 0000000..9f14e2e
--- /dev/null
@@ -0,0 +1,161 @@
+<?php // $Id: migrate2utf8.php,v 1.1 2006/03/12 18:40:01 skodak Exp $
+function migrate2utf8_book_name($recordid){
+    global $CFG, $globallang;
+
+/// Some trivial checks
+    if (empty($recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$book = get_record('book','id',$recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if ($globallang) {
+        $fromenc = $globallang;
+    } else {
+        $sitelang   = $CFG->lang;
+        $courselang = get_course_lang($book->course);  //Non existing!
+        $userlang   = get_main_teacher_lang($book->course); //N.E.!!
+
+        $fromenc = get_original_encoding($sitelang, $courselang, $userlang);
+    }
+
+/// We are going to use textlib facilities
+    if (($fromenc != 'utf-8') && ($fromenc != 'UTF-8')) {
+/// Convert the text
+        $result = utfconvert($book->name, $fromenc);
+
+        $newbook = new object;
+        $newbook->id = $recordid;
+        $newbook->name = $result;
+        migrate2utf8_update_record('book',$newbook);
+    }
+/// And finally, just return the converted field
+    return $result;
+}
+
+function migrate2utf8_book_summary($recordid){
+    global $CFG, $globallang;
+
+/// Some trivial checks
+    if (empty($recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$book = get_record('book','id',$recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if ($globallang) {
+        $fromenc = $globallang;
+    } else {
+        $sitelang   = $CFG->lang;
+        $courselang = get_course_lang($book->course);  //Non existing!
+        $userlang   = get_main_teacher_lang($book->course); //N.E.!!
+
+        $fromenc = get_original_encoding($sitelang, $courselang, $userlang);
+    }
+/// We are going to use textlib facilities
+    
+/// Convert the text
+    if (($fromenc != 'utf-8') && ($fromenc != 'UTF-8')) {
+        $result = utfconvert($book->summary, $fromenc);
+        $newbook = new object;
+        $newbook->id = $recordid;
+        $newbook->summary = $result;
+        migrate2utf8_update_record('book',$newbook);
+    }
+/// And finally, just return the converted field
+    return $result;
+}
+
+function migrate2utf8_book_chapters_title($recordid){
+    global $CFG, $globallang;
+
+/// Some trivial checks
+    if (empty($recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$chapter = get_record('book_chapters','id',$recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$book = get_record('book','id',$chapter->bookid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if ($globallang) {
+        $fromenc = $globallang;
+    } else {
+        $sitelang   = $CFG->lang;
+        $courselang = get_course_lang($book->course);  //Non existing!
+        $userlang   = get_main_teacher_lang($book->course); //N.E.!!
+
+        $fromenc = get_original_encoding($sitelang, $courselang, $userlang);
+    }
+/// We are going to use textlib facilities
+    
+/// Convert the text
+    if (($fromenc != 'utf-8') && ($fromenc != 'UTF-8')) {
+        $result = utfconvert($chapter->title, $fromenc);
+        $newchapter = new object;
+        $newchapter->id = $recordid;
+        $newchapter->title = $result;
+        migrate2utf8_update_record('book_chapters',$newchapter);
+    }
+/// And finally, just return the converted field
+    return $result;
+}
+
+function migrate2utf8_book_chapters_content($recordid){
+    global $CFG, $globallang;
+
+/// Some trivial checks
+    if (empty($recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$chapter = get_record('book_chapters','id',$recordid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if (!$book = get_record('book','id',$chapter->bookid)) {
+        log_the_problem_somewhere();
+        return false;
+    }
+
+    if ($globallang) {
+        $fromenc = $globallang;
+    } else {
+        $sitelang   = $CFG->lang;
+        $courselang = get_course_lang($book->course);  //Non existing!
+        $userlang   = get_main_teacher_lang($book->course); //N.E.!!
+
+        $fromenc = get_original_encoding($sitelang, $courselang, $userlang);
+    }
+/// We are going to use textlib facilities
+    
+/// Convert the text
+    if (($fromenc != 'utf-8') && ($fromenc != 'UTF-8')) {
+        $result = utfconvert($chapter->content, $fromenc);
+        $newchapter = new object;
+        $newchapter->id = $recordid;
+        $newchapter->content = $result;
+        migrate2utf8_update_record('book_chapters',$newchapter);
+    }
+/// And finally, just return the converted field
+    return $result;
+}
+
+?>
diff --git a/db/migrate2utf8.xml b/db/migrate2utf8.xml
new file mode 100755 (executable)
index 0000000..0188195
--- /dev/null
@@ -0,0 +1,33 @@
+<DBMIGRATION type="mod/book" VERSION="2005120100">
+  <TABLES>
+    <TABLE name="book">
+      <FIELDS>
+        <FIELD name="name" method="PHP_FUNCTION" type="varchar" length="255">
+          <PHP_FUNCTION>
+            migrate2utf8_book_name(RECORDID)
+          </PHP_FUNCTION>
+        </FIELD>
+        <FIELD name="summary" method="PHP_FUNCTION" type="text" length="0">
+          <PHP_FUNCTION>
+            migrate2utf8_book_summary(RECORDID)
+          </PHP_FUNCTION>
+        </FIELD>
+      </FIELDS>
+    </TABLE>
+    <TABLE name="book_chapters">
+      <FIELDS>
+        <FIELD name="title" method="PHP_FUNCTION" type="varchar" length="255">
+          <PHP_FUNCTION>
+            migrate2utf8_book_chapters_title(RECORDID)
+          </PHP_FUNCTION>
+        </FIELD>
+        <FIELD name="content" method="PHP_FUNCTION" type="text" length="0">
+          <PHP_FUNCTION>
+            migrate2utf8_book_chapters_content(RECORDID)
+          </PHP_FUNCTION>
+        </FIELD>
+        <FIELD name="importsrc" method="NO_CONV" type="varchar" length="255" />
+      </FIELDS>
+    </TABLE>
+  </TABLES>
+</DBMIGRATION>
diff --git a/db/mysql.php b/db/mysql.php
new file mode 100644 (file)
index 0000000..f426543
--- /dev/null
@@ -0,0 +1,36 @@
+<?PHP // $Id: mysql.php,v 1.1 2006/03/12 18:40:01 skodak Exp $
+
+function book_upgrade($oldversion) {
+/// This function does anything necessary to upgrade
+/// older versions to match current functionality
+
+    global $CFG;
+
+    if ($oldversion < 2004060600) {
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                            CHANGE intro summary TEXT NOT NULL;
+                     ");
+    }
+    if ($oldversion < 2004071100) {
+        execute_sql ("ALTER TABLE {$CFG->prefix}book_chapters
+                            ADD importsrc VARCHAR(255) NOT NULL DEFAULT '' AFTER timemodified;
+                     ");
+    }
+    if ($oldversion < 2004071201) {
+        execute_sql ("UPDATE {$CFG->prefix}log_display
+                            SET action = 'print'
+                            WHERE action = 'prINT';
+                     ");
+    }
+    if ($oldversion < 2004072400) {
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                            ADD disableprinting TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' AFTER numbering;
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                            ADD customtitles TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' AFTER disableprinting;
+                     ");
+    }
+    return true;
+}
+
+?>
diff --git a/db/mysql.sql b/db/mysql.sql
new file mode 100644 (file)
index 0000000..9cf93e5
--- /dev/null
@@ -0,0 +1,41 @@
+# $Id: mysql.sql,v 1.1 2006/03/12 18:40:01 skodak Exp $
+
+# This file contains a complete database schema for all the
+# tables used by the book module, written in SQL
+
+# It may also contain INSERT statements for particular data
+# that may be used, especially new entries in the table log_display
+
+CREATE TABLE prefix_book (
+  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  course INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  name VARCHAR(255) NOT NULL DEFAULT '',
+  summary TEXT NOT NULL DEFAULT '',
+  numbering TINYINT(4) UNSIGNED NOT NULL DEFAULT '0',
+  disableprinting TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
+  customtitles TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
+  timecreated INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  timemodified INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (id)
+) COMMENT='Defines book';
+# --------------------------------------------------------
+
+CREATE TABLE prefix_book_chapters (
+  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  bookid INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  pagenum INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  subchapter TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
+  title VARCHAR(255) NOT NULL DEFAULT '',
+  content LONGTEXT NOT NULL DEFAULT '',
+  hidden TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
+  timecreated INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  timemodified INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  importsrc VARCHAR(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (id)
+) COMMENT='Defines book_chapters';
+# --------------------------------------------------------
+
+INSERT INTO prefix_log_display VALUES ('book', 'update',   'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'view',     'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'view all', 'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'print',    'book', 'name');
diff --git a/db/postgres7.php b/db/postgres7.php
new file mode 100644 (file)
index 0000000..ef34d1e
--- /dev/null
@@ -0,0 +1,65 @@
+<?PHP // $Id: postgres7.php,v 1.1 2006/03/12 18:40:01 skodak Exp $
+
+function book_upgrade($oldversion) {
+// This function does anything necessary to upgrade
+// older versions to match current functionality
+
+    global $CFG;
+
+    if ($oldversion < 2004060600) {
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      CHANGE intro summary TEXT NOT NULL;
+                     ");
+    }
+    if ($oldversion < 2004071100) {
+
+        execute_sql ("ALTER TABLE {$CFG->prefix}book_chapters
+                      ADD importsrc VARCHAR(255);
+                     ");
+        execute_sql ("UPDATE {$CFG->prefix}book_chapters
+                      SET importsrc = '';
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book_chapters
+                      ALTER importsrc SET NOT NULL;
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book_chapters
+                      ALTER importsrc SET DEFAULT '';
+                     ");
+    }
+    if ($oldversion < 2004071201) {
+        execute_sql ("UPDATE {$CFG->prefix}log_display
+                            SET action = 'print'
+                            WHERE action = 'prINT';
+                     ");
+    }
+    if ($oldversion < 2004081100) {
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ADD disableprinting INT2;
+                     ");
+        execute_sql ("UPDATE {$CFG->prefix}book
+                      SET disableprinting = '0';
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ALTER disableprinting SET NOT NULL;
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ALTER disableprinting SET DEFAULT '0';
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ADD customtitles INT2;
+                     ");
+        execute_sql ("UPDATE {$CFG->prefix}book
+                      SET customtitles = '0';
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ALTER customtitles SET NOT NULL;
+                     ");
+        execute_sql ("ALTER TABLE {$CFG->prefix}book
+                      ALTER customtitles SET DEFAULT '0';
+                     ");
+    }
+
+    return true;
+}
+
+?>
diff --git a/db/postgres7.sql b/db/postgres7.sql
new file mode 100644 (file)
index 0000000..2d6a4ec
--- /dev/null
@@ -0,0 +1,39 @@
+# $Id: postgres7.sql,v 1.1 2006/03/12 18:40:01 skodak Exp $
+
+# This file contains a complete database schema for all the
+# tables used by the book module, written in SQL
+
+# It may also contain INSERT statements for particular data
+# that may be used, especially new entries in the table log_display
+
+CREATE TABLE prefix_book (
+  id SERIAL PRIMARY KEY,
+  course INT4 NOT NULL DEFAULT '0',
+  name VARCHAR(255) NOT NULL DEFAULT '',
+  summary TEXT NOT NULL DEFAULT '',
+  numbering INT4 NOT NULL DEFAULT '0',
+  disableprinting INT2 NOT NULL DEFAULT '0',
+  customtitles INT2 NOT NULL DEFAULT '0',
+  timecreated INT4 NOT NULL DEFAULT '0',
+  timemodified INT4 NOT NULL DEFAULT '0'
+);
+# --------------------------------------------------------
+
+CREATE TABLE prefix_book_chapters (
+  id SERIAL PRIMARY KEY,
+  bookid INT4 NOT NULL DEFAULT '0',
+  pagenum INT4 NOT NULL DEFAULT '0',
+  subchapter INT2 NOT NULL DEFAULT '0',
+  title VARCHAR(255) NOT NULL DEFAULT '',
+  content TEXT NOT NULL DEFAULT '',
+  hidden INT2 NOT NULL DEFAULT '0',
+  timecreated INT4 NOT NULL DEFAULT '0',
+  timemodified INT4 NOT NULL DEFAULT '0',
+  importsrc VARCHAR(255) NOT NULL DEFAULT ''
+);
+# --------------------------------------------------------
+
+INSERT INTO prefix_log_display VALUES ('book', 'update',   'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'view',     'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'view all', 'book', 'name');
+INSERT INTO prefix_log_display VALUES ('book', 'print',    'book', 'name');
diff --git a/delete.php b/delete.php
new file mode 100644 (file)
index 0000000..4291125
--- /dev/null
@@ -0,0 +1,68 @@
+<?PHP // $Id: delete.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require('teacheraccess.php'); //page only for teachers
+$confirm = optional_param('confirm', 0, PARAM_BOOL);
+
+
+///header and strings
+$strbooks = get_string('modulenameplural', 'book');
+$strbook  = get_string('modulename', 'book');
+
+if ($course->category) {
+    $navigation = '<a href="../../course/view.php?id='.$course->id.'">'.$course->shortname.'</a> ->';
+} else {
+    $navigation = '';
+}
+
+print_header( "$course->shortname: $book->name",
+              $course->fullname,
+              "$navigation <a href=index.php?id=$course->id>$strbooks</a> -> $book->name",
+              '',
+              '',
+              true,
+              '',
+              ''
+            );
+
+///form processing
+if ($confirm) {  // the operation was confirmed.
+    if (!$chapter->subchapter) { //delete all its subchapters if any
+        $chapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum', 'id, subchapter');
+        $found = false;
+        foreach($chapters as $ch) {
+            if ($ch->id === $chapter->id) {
+                $found = true;
+            } else if ($found and $ch->subchapter) {
+                if (!delete_records('book_chapters', 'id', $ch->id)) {
+                    error('Could not update your book');
+                }
+            } else if ($found) {
+                break;
+            }
+        }
+    }
+    if (!delete_records('book_chapters', 'id', $chapter->id)) {
+        error('Could not update your book');
+    }
+
+    add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+    add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id);
+    book_check_structure($book->id);
+    redirect('view.php?id='.$cm->id);
+    die;
+} else {
+    // the operation has not been confirmed yet so ask the user to do so
+    if ($chapter->subchapter) {
+        $strconfirm = get_string('confchapterdelete','book');
+    } else {
+        $strconfirm = get_string('confchapterdeleteall','book');
+    }
+    echo '<br />';
+    notice_yesno("<b>$chapter->title</b><p>$strconfirm</p>",
+                  "delete.php?id=$cm->id&chapterid=$chapter->id&confirm=1&sesskey=$USER->sesskey",
+                  "view.php?id=$cm->id&chapterid=$chapter->id");
+}
+
+print_footer($course);
+
+?>
diff --git a/edit.html b/edit.html
new file mode 100644 (file)
index 0000000..db4f2f3
--- /dev/null
+++ b/edit.html
@@ -0,0 +1,64 @@
+<!-- $Id: edit.html,v 1.1 2006/03/12 18:39:59 skodak Exp $ //-->
+
+<form name="chaptereditform" method="post" action="edit.php">
+<table align="center" cellpadding="5">
+
+<tr valign="top">
+    <td align="right">
+        <b><?php print_string("chaptertitle", "book") ?>:</b>
+    </td>
+    <td align="left">
+        <input type="text" name="title" size="30" value="<?php p($chapter->title) ?>">
+    </td>
+</tr>
+
+<tr valign="top">
+    <td align="right">
+        <b><?php print_string('subchapter', 'book') ?>:</b>
+    </td>
+    <td align="left">
+        <?php
+        if ($chapter->subchapter) {
+            $selected = ' checked="checked"';
+        } else {
+            $selected = '';
+        }
+        echo '<input name="subchapter" type="checkbox" value="1"'.$selected.' />';
+       ?>
+    </td>
+</tr>
+
+<tr valign="top">
+    <td valign="top" align="right">
+        <p><b><?php print_string('content', 'book') ?>:</b></p>
+        <font size="1">
+            <?PHP
+            helpbutton('writing', get_string('helpwriting'), 'moodle', true, true);
+            echo '<br />';
+            if ($usehtmleditor) {
+               helpbutton('richtext', get_string('helprichtext'), 'moodle', true, true);
+            } else {
+               emoticonhelpbutton('theform', 'text');
+            }
+             ?><br />
+        </font>
+    </td>
+    <td align="center">
+        <?php print_textarea($usehtmleditor, 20, 60, 630, 400, 'content', $chapter->content); ?>
+    </td>
+</tr>
+</table>
+<center>
+    <input type="submit" value="<?php print_string('savechanges') ?>" />
+    <input type="reset" value="<?php print_string('revert') ?>" />
+    <?php
+        if($chapter->id == -1) {
+            echo '<font size="-1"> (<a href="import.php?id='.$cm->id.'">'.get_string('doimport', 'book').'</a>)</font>';
+        }
+    ?>
+</center>
+    <input type="hidden" name="id"        value="<?php p($cm->id) ?>" />
+    <input type="hidden" name="pagenum"   value="<?php p($chapter->pagenum) ?>" />
+    <input type="hidden" name="chapterid" value="<?php p($chapter->id) ?>" />
+    <input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" /> 
+</form>
diff --git a/edit.php b/edit.php
new file mode 100644 (file)
index 0000000..ba74f75
--- /dev/null
+++ b/edit.php
@@ -0,0 +1,156 @@
+<?PHP // $Id: edit.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id         = required_param('id', PARAM_INT);           // Course Module ID
+$chapterid  = optional_param('chapterid', 0, PARAM_INT); // Chapter ID
+$pagenum    = optional_param('pagenum', 0, PARAM_INT);
+$subchapter = optional_param('subchapter', 0, PARAM_BOOL);
+
+// =========================================================================
+// security checks START - only teachers edit
+// =========================================================================
+require_login();
+
+if (!$cm = get_record('course_modules', 'id', $id)) {
+    error('Course Module ID was incorrect');
+}
+
+if (!$course = get_record('course', 'id', $cm->course)) {
+    error('Course is misconfigured');
+}
+
+if (!isteacheredit($course->id)) {
+    error('Only editing teachers can edit books!', $_SERVER['HTTP_REFERER']);
+}
+
+if (!$book = get_record('book', 'id', $cm->instance)) {
+    error('Course module is incorrect');
+}
+
+$chapter = get_record('book_chapters', 'id', $chapterid);
+
+//check all variables
+unset($id);
+unset($chapterid);
+if ($chapter) {
+    if ($chapter->bookid != $book->id) {//chapter id not in this book!!!!
+        error('Chapter not part of this book!');
+    }
+    $pagenum = $chapter->pagenum;
+} else {
+    $pagenum = (integer)$pagenum;
+}
+
+// =========================================================================
+// security checks END
+// =========================================================================
+
+
+/// If data submitted, then process and store.
+if (($form = data_submitted()) && (confirm_sesskey())) {
+    //TODO: skip it for now
+    //prepare data - security checks
+    //$form->title = clean_text($form->title, FORMAT_HTML);
+    //$form->content = clean_text($form->content, FORMAT_HTML);
+
+    if (isset($form->subchapter) ) {
+        $form->subchapter = 1;
+    } else {
+        $form->subchapter = 0;
+    }
+    if ($chapter) {
+        /// editing existing chapter
+        $chapter->content = $form->content;
+        $chapter->title = $form->title;
+        $chapter->subchapter = $form->subchapter;
+        $chapter->timemodified = time();
+        $chapter->importsrc = addslashes($chapter->importsrc); //use already stored importsrc
+        if (!update_record('book_chapters', $chapter)) {
+            error('Could not update your book');
+         }
+        add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+        add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
+    } else {
+        /// adding new chapter
+        $chapter->bookid = $book->id;
+        $chapter->pagenum = $form->pagenum + 1; //place after given pagenum, lets hope it is a number
+        $chapter->subchapter = $form->subchapter;
+        $chapter->title = $form->title;
+        $chapter->content = $form->content;
+        $chapter->hidden = 0;
+        $chapter->timecreated = time();
+        $chapter->timemodified = $chapter->timecreated;
+        $chapter->importsrc = '';
+
+        $chapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum', 'id, pagenum');
+        if ($chapters) {
+            foreach($chapters as $ch) {
+                if ($ch->pagenum > $pagenum) {
+                    $ch->pagenum = $ch->pagenum + 1;
+                     if (!update_record('book_chapters', $ch)) {
+                        error('Could not update your book');
+                    }
+                }
+            }
+        }
+        if (!$chapter->id = insert_record('book_chapters', $chapter)) {
+            error('Could not insert a new chapter');
+        }
+        add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+        add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
+    }
+
+    book_check_structure($book->id);
+    redirect("view.php?id=$cm->id&chapterid=$chapter->id");
+    die;
+}
+
+/// Otherwise fill and print the form.
+$strbook = get_string('modulename', 'book');
+$strbooks = get_string('modulenameplural', 'book');
+$stredit = get_string('edit');
+$pageheading = get_string('editingchapter', 'book');
+
+$usehtmleditor = can_use_html_editor();
+
+if (!$chapter) {
+    $chapter->id = -1;
+    $chapter->title = '';
+    $chapter->content = '';
+    $chapter->subchapter = $subchapter;
+    $chapter->pagenum = $pagenum;
+}
+
+///prepare the page header
+if ($course->category) {
+    $navigation = '<a href="../../course/view.php?id='.$course->id.'">'.$course->shortname.'</a> ->';
+} else {
+    $navigation = '';
+}
+
+print_header( "$course->shortname: $book->name",
+              $course->fullname,
+              "$navigation <a href=\"index.php?id=$course->id\">$strbooks</A> -> <a href=\"view.php?id=$cm->id\">$book->name</A> -> $stredit",
+              '',
+              '',
+              true,
+              '',
+              ''
+            );
+
+
+$icon = '<img align="absmiddle" height="16" width="16" src="icon_chapter.gif" />&nbsp;';
+print_heading_with_help($pageheading, 'edit', 'book', $icon);
+print_simple_box_start('center', '');
+include('edit.html');
+print_simple_box_end();
+
+if ($usehtmleditor ) {
+    use_html_editor();
+}
+
+print_footer($course);
+
+?>
diff --git a/icon.gif b/icon.gif
new file mode 100644 (file)
index 0000000..bcdde5a
Binary files /dev/null and b/icon.gif differ
diff --git a/icon_chapter.gif b/icon_chapter.gif
new file mode 100644 (file)
index 0000000..3e02109
Binary files /dev/null and b/icon_chapter.gif differ
diff --git a/import.php b/import.php
new file mode 100644 (file)
index 0000000..0cbed02
--- /dev/null
@@ -0,0 +1,188 @@
+<?PHP // $Id: import.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id         = required_param('id', PARAM_INT);           // Course Module ID
+$subchapter = optional_param('subchapter', 0, PARAM_BOOL);
+$cancel     = optional_param('cancel', 0, PARAM_BOOL);
+
+// =========================================================================
+// security checks START - only teachers edit
+// =========================================================================
+require_login();
+
+if (!$cm = get_record('course_modules', 'id', $id)) {
+    error('Course Module ID was incorrect');
+}
+
+if (!$course = get_record('course', 'id', $cm->course)) {
+    error('Course is misconfigured');
+}
+
+if (!isteacheredit($course->id)) {
+    error('Only editing teachers can edit books!');
+}
+
+if (!$book = get_record('book', 'id', $cm->instance)) {
+    error('Course module is incorrect');
+}
+
+//check all variables
+unset($id);
+
+// =========================================================================
+// security checks END
+// =========================================================================
+
+///cancel pressed, go back to book
+if ($cancel) {
+    redirect('view.php?id='.$cm->id);
+    die;
+}
+
+///prepare the page header
+$strbook = get_string('modulename', 'book');
+$strbooks = get_string('modulenameplural', 'book');
+$strimport = get_string('import', 'book');
+
+if ($course->category) {
+    $navigation = '<a href="../../course/view.php?id='.$course->id.'">'.$course->shortname.'</a> ->';
+} else {
+    $navigation = '';
+}
+
+print_header( "$course->shortname: $book->name",
+              $course->fullname,
+              "$navigation <a href=\"index.php?id=$course->id\">$strbooks</a> -> <a href=\"view.php?id=$cm->id\">$book->name</a> -> $strimport",
+              '',
+              '',
+              true,
+              '',
+              ''
+            );
+
+/// If data submitted, then process, store and relink.
+if (($form = data_submitted()) && (confirm_sesskey())) {
+    $form->reference = stripslashes($form->reference);
+    if ($form->reference != '') { //null path is root
+        $form->reference = book_prepare_link($form->reference);
+        if ($form->reference == '') { //evil characters in $ref!
+            error('Invalid character detected in given path!');
+        }
+    }
+    $coursebase = $CFG->dataroot.'/'.$book->course;
+    if ($form->reference == '') {
+        $base = $coursebase;
+    } else {
+        $base = $coursebase.'/'.$form->reference;
+    }
+
+    //prepare list of html files in $refs
+    $refs = array();
+    $htmlpat = '/\.html$|\.htm$/i';
+    if (is_dir($base)) { //import whole directory
+        $basedir = opendir($base);
+        while ($file = readdir($basedir)) {
+            $path = $base.'/'.$file;
+            if (filetype($path) === 'file' and preg_match($htmlpat, $file)) {
+                $refs[] = str_replace($coursebase, '', $path);
+            }
+        }
+        asort($refs);
+    } else if (is_file($base)) { //import single file
+        $refs[] = '/'.$form->reference;
+    } else { //what is it???
+        error('Incorrect file/directory specified!');
+    }
+
+    //import files
+    echo '<center>';
+    echo '<b>'.get_string('importing', 'book').':</b>';
+    echo '<table cellpadding="2" cellspacing="2" border="1">';
+    book_check_structure($book->id);
+    foreach($refs as $ref) {
+        $chapter = book_read_chapter($coursebase, $ref);
+        if ($chapter) {
+            $chapter->title = addslashes($chapter->title);
+            $chapter->content = addslashes($chapter->content);
+            $chapter->importsrc = addslashes($chapter->importsrc);
+            $chapter->bookid = $book->id;
+            $chapter->pagenum = count_records('book_chapters', 'bookid', $book->id)+1;
+            $chapter->timecreated = time();
+            $chapter->timemodified = time();
+            echo "imsrc:".$chapter->importsrc;
+            if (($subchapter) || preg_match('/_sub\.htm/i', $chapter->importsrc)) { //if filename or directory starts with sub_* treat as subdirecotories
+                $chapter->subchapter = 1;
+            } else {
+                $chapter->subchapter = 0;
+            }
+            if (!$chapter->id = insert_record('book_chapters', $chapter)) {
+                error('Could not update your book');
+            }
+            add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+            add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
+        }
+    }
+    echo '</table><br />';
+    echo '<b>'.get_string('relinking', 'book').':</b>';
+    echo '<table cellpadding="2" cellspacing="2" border="1">';
+    //relink whole book = all chapters
+    book_relink($cm->id, $book->id, $course->id);
+    echo '</table><br />';
+    echo '<a href="view.php?id='.$cm->id.'">'.get_string('continue').'</a>';
+    echo '</center>';
+} else {
+/// Otherwise fill and print the form.
+    $strdoimport = get_string('doimport', 'book');
+    $strchoose = get_string('choose');
+    $pageheading = get_string('importingchapters', 'book');
+
+    $icon = '<img align="absmiddle" height="16" width="16" src="icon_chapter.gif" />&nbsp;';
+    print_heading_with_help($pageheading, 'import', 'book', $icon);
+    print_simple_box_start('center', '');
+    ?>
+    <form name="theform" method="post" action="import.php">
+    <table cellpadding="5" align="center">
+    <tr valign="top">
+        <td valign="top" align="right">
+            <b><?php print_string('fileordir', 'book') ?>:</b>
+        </td>
+        <td>
+            <?php
+              echo '<input name="reference" size="40" value="" />&nbsp;';
+              button_to_popup_window ('/mod/book/coursefiles.php?choose=theform.reference&id='.$course->id,
+                                      'coursefiles', $strchoose, 500, 750, $strchoose);
+            ?>
+        </td>
+    </tr>
+    <tr valign="top">
+        <td valign="top" align="right">
+            <b><?php print_string('subchapter', 'book') ?>:</b>
+        </td>
+        <td>
+        <?php
+            echo '<input name="subchapter" type="checkbox" value="1" />';
+        ?>
+        </td>
+    </tr>
+    <tr valign="top">
+        <td valign="top" align="right">&nbsp;</td>
+        <td><p><?php print_string('importinfo', 'book') ?></p></td>
+    </tr>
+    </table>
+    <center>
+        <input type="submit" value="<?php echo $strdoimport ?>" />
+        <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" />
+    </center>
+        <input type="hidden" name="id" value="<?php p($cm->id) ?>" />
+        <input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" /> 
+    </form>
+
+    <?php
+    print_simple_box_end();
+}
+
+print_footer($course);
+
+?>
diff --git a/index.php b/index.php
new file mode 100644 (file)
index 0000000..7f31506
--- /dev/null
+++ b/index.php
@@ -0,0 +1,118 @@
+<?PHP // $Id: index.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+/// This page lists all the instances of book in a particular course
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id = required_param('id', PARAM_INT);           // Course Module ID
+
+// =========================================================================
+// security checks START - teachers and students view
+// =========================================================================
+if ($CFG->forcelogin) {
+    require_login();
+}
+
+if (!$course = get_record('course', 'id', $id)) {
+    error('Course ID is incorrect');
+}
+
+if ($course->category) {
+    require_login($course->id);
+}
+
+//check all variables
+unset($id);
+
+// =========================================================================
+// security checks END
+// =========================================================================
+
+/// Get all required strings
+$strbooks = get_string('modulenameplural', 'book');
+$strbook  = get_string('modulename', 'book');
+
+/// Print the header
+if ($course->category) {
+    $navigation = '<a href="../../course/view.php?id='.$course->id.'">'.$course->shortname.'</a> ->';
+} else {
+    $navigation = '';
+}
+
+print_header( "$course->shortname: $strbooks",
+               $course->fullname,
+               "$navigation $strbooks",
+               '',
+               '',
+               true,
+               '',
+               navmenu($course)
+             );
+
+add_to_log($course->id, 'book', 'view all', 'index.php?id='.$course->id, '');
+
+/// Get all the appropriate data
+if (!$books = get_all_instances_in_course('book', $course)) {
+    notice('There are no books', '../../course/view.php?id='.$course->id);
+    die;
+}
+
+/// Print the list of instances
+$strname  = get_string('name');
+$strweek  = get_string('week');
+$strtopic  = get_string('topic');
+$strsummary = get_string('summary');
+$strchapters  = get_string('chapterscount', 'book');
+
+if ($course->format == 'weeks') {
+    $table->head  = array ($strweek, $strname, $strsummary, $strchapters);
+    $table->align = array ('center', 'left', 'left', 'center');
+} else if ($course->format == 'topics') {
+    $table->head  = array ($strtopic, $strname, $strsummary, $strchapters);
+    $table->align = array ('center', 'left', 'left', 'center');
+} else {
+    $table->head  = array ($strname, $strsummary, $strchapters);
+    $table->align = array ('left', 'left', 'left');
+}
+
+$currentsection = '';
+foreach ($books as $book) {
+    $nocleanoption = new object();
+    $nocleanoption->noclean = true;
+    $book->summary = format_text($book->summary, FORMAT_HTML, $nocleanoption, $course->id);
+    $book->summary = '<span style="font-size:x-small;">'.$book->summary.'</span>';
+
+    if (!$book->visible) {
+        //Show dimmed if the mod is hidden
+        $link = '<a class="dimmed" href="view.php?id='.$book->coursemodule.'">'.$book->name.'</a>';
+    } else {
+        //Show normal if the mod is visible
+        $link = '<a href="view.php?id='.$book->coursemodule.'">'.$book->name.'</a>';
+    }
+
+    $count = count_records('book_chapters', 'bookid', $book->id, 'hidden', '0');
+
+    if ($course->format == 'weeks' or $course->format == 'topics') {
+        $printsection = '';
+        if ($book->section !== $currentsection) {
+            if ($book->section) {
+                $printsection = $book->section;
+            }
+            if ($currentsection !== '') {
+                $table->data[] = 'hr';
+            }
+            $currentsection = $book->section;
+        }
+        $table->data[] = array ($printsection, $link, $book->summary, $count);
+    } else {
+        $table->data[] = array ($link, $book->summary, $count);
+    }
+}
+
+echo '<br />';
+print_table($table);
+
+print_footer($course);
+
+?>
diff --git a/lang/be_utf8/book.php b/lang/be_utf8/book.php
new file mode 100644 (file)
index 0000000..7b1ce6b
--- /dev/null
@@ -0,0 +1,42 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:03 skodak Exp $ 
+      // book.php - created with Moodle 1.4.4 (2004083140)
+
+
+$string['addafter'] = 'Дадаць  новы раздзел';
+$string['chapterscount'] = 'Раздзелы';
+$string['chaptertitle'] = 'Назва раздзела';
+$string['confchapterdelete'] = 'Вы сапраўды жадаеце выдаліць гэты раздзел?';
+$string['confchapterdeleteall'] = 'Ці сапраўды Вы жадаеце выдаліць гэты раздзел і ўсе параграфы?';
+$string['content'] = 'Змест';
+$string['customtitles'] = 'Прыватныя назвы';
+$string['disableprinting'] = 'Забараніць друкаванне';
+$string['doimport'] = 'Імпарт';
+$string['editingchapter'] = 'Рэдагаваць радзел';
+$string['faq'] = 'FAQ па падручніку';
+$string['fileordir'] = 'Файл або тэчка';
+$string['import'] = 'Імпарт';
+$string['importinfo'] = 'Імпартаваць вылучаны HTML файл або тэчку. <br /> Раздзелы адсартуюцца па алфавіту па назве файлаў.';
+$string['importing'] = 'Імпартаванне';
+$string['importingchapters'] = 'Імпартаванне радзелаў у кнігу';
+$string['maindirectory'] = 'Галоўная тэчка';
+$string['modulename'] = 'Падручнік';
+$string['modulenameplural'] = 'Падручнікі';
+$string['navexit'] = 'Выйсці з падручніка';
+$string['navnext'] = 'Далей';
+$string['navprev'] = 'Назад';
+$string['numbering'] = 'Нумарацыя раздзела';
+$string['numbering0'] = 'Няма';
+$string['numbering1'] = 'Нумары';
+$string['numbering2'] = 'Маркеры';
+$string['numbering3'] = 'Павялічыць водступ';
+$string['printbook'] = 'Друкаваць увесь падручнік';
+$string['printchapter'] = 'Друкаваць раздзел';
+$string['printdate'] = 'Дата';
+$string['printedby'] = 'Надрукаваны';
+$string['relinking'] = 'Перакампанаваць';
+$string['subchapter'] = 'Параграф';
+$string['toc'] = 'Змест';
+$string['tocwidth'] = 'Вызначыць шырыню зместу для ўсіх падручнікаў';
+$string['top'] = 'наверх';
+
+?>
diff --git a/lang/be_utf8/help/book/customtitles.html b/lang/be_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..a79febf
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Прыватныя загалоўкі</b></p>
+
+<p>Загалоўкі раздзелаў аўтаматычны адлюстроўваюцца толькі ў змесце падручніка.</p>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/disableprinting.html b/lang/be_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..a9b457f
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Забараніць друкаванне</b></p>
+
+<p>Схаваць цэтлік друку.</p>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/edit.html b/lang/be_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..8c6efd3
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Рэдагаванне раздзела</b></p>
+
+<p>Калі ласка, прызначайце кароткі (па колькасці сімвалаў) загаловак раздзелу.</p>
+
+<p>Максімальная глыбіня падраздзелаў - два.</p>
+
+<p>Калі Вы маеце праблемы пры выкарыстанні HTML-рэдактара,  лепей абярыце новы браўзэр, напрыклад Mozilla Firefox, або ў наладах уліковага запісу пазначце выкарыстанне Web-форм замест рэдактара ў полі "Падчас рэдагавання тэксту".</p>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/faq.html b/lang/be_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..129c7c6
--- /dev/null
@@ -0,0 +1,39 @@
+<p align="center">
+  <b>Часта задаваемыя пытанні аб падручніку</b>
+</p>
+<dl>
+  <dt>
+    <b>Чаму толькі два ўзроўня (раздзел і параграф)?</b>
+  </dt>
+  <dd>
+    Два ўзроўня звычайна дастаткова для ўсіх кніг, трэці ўзровень будзе весці да дрэнна структураваных дакументаў. Модуль "Падручнік" спраектаваны для стварэння невялічкіх шматстаронкавых навучальных матэрыялаў. Звычайна для вялікіх дакументаў лепей выкарыстоўваць файлы фармата PDF. Лёгкі шлях да стварэння PDF-файла - выкарыстанне віртуальнага прынтэра (гл.
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    і г.д..).
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Студэнты могуць рэдагаваць падручнік?</b>
+  </dt>
+  <dd>
+    Толькі настаўнікі могуць ствараць і рэдагваць падручнікі. Пакуль няма планаў, каб дадаць првы студэнтаў на рэдагаванне падручніка, але кожны можа стварыць нешта вельмі падобнае для студэнтаў, напрыклад, партфоліо. Галоўная прычына гэтага - пакінуць модуль "Падручнік" як мага простым.
+  </dd>
+  <br />
+  <dt>
+    <b>Як праводзіць пошук падручнікаў і ў іх?</b>
+  </dt>
+  <dd>
+    На бюягучы момант для пошуку ў падручніку лепей выкарыстоўваць сродкі пошука браўзэра і шукаць дадзеныя на старонцы, якая падрыхтавана для друку. Глабальны пошук магчымы толькі ў форумах Moodle. Было б зручна, калі б быў глабальны пошук па ўсіх рэсурсах, ўключаючы падручнікі. Ці ёсць валанцёры для напісання такога скрыпта?
+  </dd>
+  <br />
+  <dt>
+    <b>Мой загаловак не змяшчаецца ў адзін радок.</b>
+  </dt>
+  <dd>
+    Калі магчыма, дык скараціце загалоўкі або звяртайцеся да адміністратара сайта, каб змяніў шырыню радка загалоўка. Яна вызначаецца ў наладах модуля для ўсіх падручнікаў на сайце.
+  </dd>
+  <br />
+</dl>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/import.html b/lang/be_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..e96dfe7
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Імпарт</b></p>
+
+<p>Вы можаце імпартаваць адзін HTML-файл або ўсе HTML-файлы, якія знаходзяцца ў тэчцы.</p>
+
+<p>Адносныя спасылкі паміж файламі пераўтвараюцца ў абсалютныя спасылкі паміж раздзеламі. Малюнкі, flash і Java таксама правільна імпартуюцца.</p>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/index.html b/lang/be_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..f6a0354
--- /dev/null
@@ -0,0 +1,10 @@
+<p>Book module</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Нумарацыя раздзелаў</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Забараніць друкаванне</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Прыватныя загалоўкі</a>
+  <li><a href="help.php?module=book&file=summary.html">Абагульненне</a>
+  <li><a href="help.php?module=book&file=edit.html">Рэдагаванне раздзела</a>
+  <li><a href="help.php?module=book&file=import.html">Імпарт</a>
+  <li><a href="help.php?module=book&file=faq.html">Часта задаваемыя пытанні па падручніку</a>
+</ul>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/mods.html b/lang/be_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..be59a96
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="http://distance.iatp.by/mod/book/icon.gif"> <b>Падручнікі</b></p>
+<ul>
+<p>Падручнік - гэта просты шматстаронкавы навучальны матэрыял.</p>
+</ul>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/numberingtype.html b/lang/be_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..f46d945
--- /dev/null
@@ -0,0 +1,12 @@
+<p align="center"><b>Нумарацыя раздзелаў</b></p>
+
+<p>Існуе неклаькі вызначаных шляхоў нумарацыі:
+
+<p><b>Няма</b> - усе загалоўкі раздзелаў і параграфаў не фарматуюцца. Калі жадаеца, то ў дадзеным выпадку можаце скарыстаць спецыяльныя стылі для нумарацыі. Напрыклад, выкарыстоўваць літары пры нумарацыі загалоўкаў: "А. Першы раздзел", "А.1. Першы параграф перашага раздзела", ...</p>
+
+<p><b>Лічбы</b> - раздзелы і параграфы нумаруюцца (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Маркеры</b> - параграфы паказваюцца з водступам і пазначаюцца маркерамі.<p>
+
+<p><b>З водступам</b> - параграфы паказваюцца з водступам.</p>
\ No newline at end of file
diff --git a/lang/be_utf8/help/book/summary.html b/lang/be_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..9d46653
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Абагульненне</b></p>
+
+<p>Абагульненне - гэта кароткія звесткі аб падручніку.</p>
+
+<p>Калі ласка, не спрабуйце пісаць вялізнае абагульненне!</p>
\ No newline at end of file
diff --git a/lang/ca_utf8/book.php b/lang/ca_utf8/book.php
new file mode 100644 (file)
index 0000000..794fec8
--- /dev/null
@@ -0,0 +1,49 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:03 skodak Exp $
+
+$string['modulename'] = 'Llibre';
+$string['modulenameplural'] = 'Llibres';
+
+$string['toc'] = 'Índex';
+$string['tocwidth'] = 'Escolliu l\'amplada de l\'índex per tots els llibres.';
+$string['faq'] = 'PMF dels llibres (FAQ)';
+
+$string['disableprinting'] = 'Desactiva la impressió';
+$string['customtitles'] = 'Títols personalitzats';
+
+$string['editingchapter'] = 'S\'està editant el capítol';
+$string['chaptertitle'] = 'Títol del capítol';
+$string['content'] = 'Contingut';
+$string['subchapter'] = 'Subcapítol';
+
+$string['numbering'] = 'Numeració de capítols';
+$string['numbering0'] = 'Cap';
+$string['numbering1'] = 'Nombres';
+$string['numbering2'] = 'Pics';
+$string['numbering3'] = 'Indentat';
+
+$string['chapterscount'] = 'Capítols';
+
+$string['addafter'] = 'Afegeix un nou capítol';
+$string['confchapterdelete'] = 'Realment voleu esborrar aquest capítol?';
+$string['confchapterdeleteall'] = 'Realment voleu esborrar aquest capítol i tots els seus subcapítols?';
+
+$string['printbook'] = 'Imprimeix el llibre sencer';
+$string['printchapter'] = 'Imprimeix aquest capítol';
+$string['printdate'] = 'Data';
+$string['printedby'] = 'Imprès per';
+$string['top'] = 'amunt';
+
+$string['navprev'] = 'Prèvi';
+$string['navnext'] = 'Següent';
+$string['navexit'] = 'Sortir del llibre';
+
+$string['importingchapters'] = 'S\'estan important capítols al llibre';
+$string['import'] = 'Importa';
+$string['doimport'] = 'Importa';
+$string['importing'] = 'S\'està important';
+$string['relinking'] = 'S\'està reenllaçant';
+$string['importinfo'] = 'Importa el directori o el fitxer HTML seleccionat.<br />Els capítols estan ordenats alfabèticament pel nom del fitxer.';
+$string['maindirectory'] = 'Directori principal';
+$string['fileordir'] = 'Fitxer o directori';
+
+?>
diff --git a/lang/ca_utf8/help/book/customtitles.html b/lang/ca_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..6d0ed70
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Títols personalitzats</b></p>
+
+<p>Els títols de capítols es mostren automàticament només a l'índex.</p>
diff --git a/lang/ca_utf8/help/book/disableprinting.html b/lang/ca_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..78c66b0
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Deshabilita la impressió</b></p>
+
+<p>Oculta les icones d'imprimir.</p>
diff --git a/lang/ca_utf8/help/book/edit.html b/lang/ca_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..2ae442a
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Edició de capítol</b></p>
+
+<p>Procureu mantenir curt el títol del capítol.</p>
+
+<p>El nivell màxim de subcapítols és de dos.</p>
+
+<p>Si teniu problemes emprant l'editor HTML integrat, proveu d'usar un altre navegador (com ara el Mozilla Firefox) o bé desactivar completament l'editor en el vostre perfil.</p>
diff --git a/lang/ca_utf8/help/book/faq.html b/lang/ca_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..2731dcc
--- /dev/null
@@ -0,0 +1,39 @@
+<p align="center">
+  <b>Preguntes Més Freqüents sobre els Llibres</b>
+</p>
+<dl>
+  <dt>
+    <b>Per què només dos nivells?</b>
+  </dt>
+  <dd>
+    Dos nivells acostuma a ser suficient per la majoria de llibres; tres nivells conduirien a documents amb una estructura pobra. El mòdul de llibres està dissenyat per a crear materials d'estudi multipàgina curts. Per a documents més llargs és preferible emprar el format PDF. La manera més simple de crear PDF són les impressores virtuals (vegeu
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    etc.). [N. del T.: A banda del mètode de les impressores virtuals, molts programes lliures (p.ex. OpenOffice) permeten exportar els documents directament a format PDF]
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Els estudiants poden editar els llibres?</b>
+  </dt>
+  <dd>
+    Només els professors poden crear i modificar els llibres. No tenim previst implementar la modificació de llibres per part d'estudiants, però algú podria crear quelcom semblant per a estudiants (portafoli?). La raó principal és la de mantenir el mòdul de Llibres el més senzill possible.
+  </dd>
+  <br />
+  <dt>
+    <b>Com puc fer cerques dins dels llibres?</b>
+  </dt>
+  <dd>
+    De moment només hi ha una manera: emprar les facilitats de cerca del navegador en una pàgina d'impressió. Les cerques globals només són possibles actualment als fòrums de Moodle. Estaria bé poder fer cerques globals en tots els recursos, llibres inclosos; algun voluntari?
+  </dd>
+  <br />
+  <dt>
+    <b>Els meus títols no caben en una línia.</b>
+  </dt>
+  <dd>
+    Mireu de reescriure els vostres títols o bé demaneu a l'administrador del lloc que un canvïi l'amplada de l'índex. Aquesta amplada és definida de forma global per a tots els llibres a la pàgina de configuració del mòdul.
+  </dd>
+  <br />
+</dl>
diff --git a/lang/ca_utf8/help/book/import.html b/lang/ca_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..a0d42ae
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Importació</b></p>
+
+<p>Podeu importar un únic fitxer HTML o bé tots els fitxers HTML d'un directori.</p>
+
+<p>Els enllaços relatius seran convertits a enllaços absoluts a capítols. Les imatges i els arxius flash o java també es reenllaçaran.</p>
diff --git a/lang/ca_utf8/help/book/index.html b/lang/ca_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..725a957
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Mòdul de Llibres</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Numeració de capítols</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Desactiva la impressió</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Títols personalitzats</a>
+  <li><a href="help.php?module=book&file=summary.html">Resum</a>
+  <li><a href="help.php?module=book&file=edit.html">Edició de capítols</a>
+  <li><a href="help.php?module=book&file=import.html">Importació</a>
+  <li><a href="help.php?module=book&file=faq.html">PMF del mòdul Llibres (FAQ)</a>
+</ul>
+
diff --git a/lang/ca_utf8/help/book/mods.html b/lang/ca_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..697a995
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Llibres</b></p>
+<ul>
+<p>Un llibre és un material d\'estudi multipàgina senzill</p>
+</ul>
diff --git a/lang/ca_utf8/help/book/numberingtype.html b/lang/ca_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..28ecf79
--- /dev/null
@@ -0,0 +1,12 @@
+<p align="center"><b>Numeració de capítols</b></p>
+
+<p>Hi ha uns quants tipus de numeració predefinits:
+
+<p><b>Cap</b> - als títols de capítols i subcapítols no se'ls aplica format; useu-lo si voleu definir estils de numeració especials, com ara lletres: en aquest cas, en el títol del capítol escriviu: "A. Primer capítol", "A.1. Un subcapítol",...</p>
+
+<p><b>Nombres</b> - els capítols i subcapítols es numeren (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Pics</b> - els subcapítols s'indenten i es mostren amb pics.<p>
+
+<p><b>Indentats</b> - els subcapítols s'indenten.</p>
diff --git a/lang/ca_utf8/help/book/summary.html b/lang/ca_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..1beb8a5
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Resum</b></p>
+
+<p>El resum és una descripció molt curta del llibre.</p>
+
+<p>No estigueu temptats d'escriure massa coses aquí!</p>
diff --git a/lang/cs_utf8/book.php b/lang/cs_utf8/book.php
new file mode 100644 (file)
index 0000000..01a57ba
--- /dev/null
@@ -0,0 +1,42 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:03 skodak Exp $ 
+      // book.php - created with Moodle 1.3.3 + (2004052503)
+
+
+$string['addafter'] = 'Přidat novou kapitolu';
+$string['chapterscount'] = 'Počet kapitol';
+$string['chaptertitle'] = 'Nadpis';
+$string['confchapterdelete'] = 'Opravdu chcete odstranit tuto kapitolu?';
+$string['confchapterdeleteall'] = 'Opravdu chcete odstranit tuto kapitolu včetně podkapitol?';
+$string['content'] = 'Text';
+$string['customtitles'] = 'Uživatelské nadpisy';
+$string['disableprinting'] = 'Zakázat tisk';
+$string['doimport'] = 'Importovat';
+$string['editingchapter'] = 'Úprava kapitoly';
+$string['faq'] = 'Časté otázky';
+$string['fileordir'] = 'Soubor nebo adresář';
+$string['import'] = 'Import';
+$string['importinfo'] = 'Importovat HTML soubor nebo všechny soubory v zadané složce.<br />Kapitoly budou seřazeny abecedně podle názvů souborů.<br />Soubory s názvem ve tvaru \'sub_*.*\' jsou vždy importovány jako podkapitoly.';
+$string['importing'] = 'Importuji';
+$string['importingchapters'] = 'Importování kapitol';
+$string['maindirectory'] = 'Hlavní složka';
+$string['modulename'] = 'Kniha';
+$string['modulenameplural'] = 'Knihy';
+$string['navnext'] = 'Následující';
+$string['navprev'] = 'Předchozí';
+$string['navexit'] = 'Zpět na přehled';
+$string['numbering'] = 'Číslování kapitol';
+$string['numbering0'] = 'Žádné';
+$string['numbering1'] = 'Čísla';
+$string['numbering2'] = 'Puntíky';
+$string['numbering3'] = 'Odsazené';
+$string['printbook'] = 'Vytisknout celou knihu';
+$string['printchapter'] = 'Vytisknout jednu kapitolu';
+$string['printdate'] = 'Datum';
+$string['printedby'] = 'Vytiskl(a)';
+$string['relinking'] = 'Relinkuji';
+$string['subchapter'] = 'Podkapitola';
+$string['toc'] = 'Obsah';
+$string['tocwidth'] = 'Vyberte šířku obsahu pro všechny knihy.';
+$string['top'] = 'začátek';
+
+?>
diff --git a/lang/cs_utf8/help/book/customtitles.html b/lang/cs_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..70879ba
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Uživatelské nadpisy</b></p>
+
+<p>Nadpisy jsou zobrazeny pouze v obsahu knihy.</p>
diff --git a/lang/cs_utf8/help/book/disableprinting.html b/lang/cs_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..42c9cb6
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Zakázat tisknutí</b></p>
+
+<p>Skrýt ikony pro tisk.</p>
diff --git a/lang/cs_utf8/help/book/edit.html b/lang/cs_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..51eb694
--- /dev/null
@@ -0,0 +1,8 @@
+<p align="center"><b>Úprava kapitol</b></p>
+
+<p>Snažte se psát pouze krátké kapitoly.</p>
+
+<p>Knika může mít pouze dvě úrovně nadpisů.</p>
+
+<p>jestliže máte problémy s HTML editorem, můžete si zkusit nainstalovat jiný prohlížeč
+(napřiklad Mozilla Firefox).</p>
\ No newline at end of file
diff --git a/lang/cs_utf8/help/book/faq.html b/lang/cs_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..68d1caa
--- /dev/null
@@ -0,0 +1,41 @@
+<p align="center">
+  <b>Často kladené otázky</b>
+</p>
+<dl>
+  <dt>
+    <b>Proč pouze dvě úrovně?</b>
+  </dt>
+  <dd>
+    Dvě úrovně nadpisu stačí, vždy se snažte psát krátce a srozumitelně.
+    Jestliže si myslíte, že potřebuje víc úrovní, rozdělte text do několika knih.
+    Pro delší texty je většinou vhodnější PDF formát. PDF soubory můžete
+    vytvořit pomocí následujících programů:
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>.
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Mohou studenti upravovat knihy?</b>
+  </dt>
+  <dd>
+    Knihy mohou vytvářet a upravovat pouze učitelé.
+  </dd>
+  <br />
+  <dt>
+    <b>Mohu vyhledávat v knihách?</b>
+  </dt>
+  <dd>
+    Použijte vyhledávání ve vašem prohlížeči.
+  </dd>
+  <br />
+  <dt>
+    <b>Nadpisy se mi nevejdou na jeden řádek.</b>
+  </dt>
+  <dd>
+    Buďto zkraťte nadpis, nebo požádejte vašeho správce, aby změnil šířku obsahu.
+  </dd>
+  <br />
+</dl>
diff --git a/lang/cs_utf8/help/book/import.html b/lang/cs_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..9f4d433
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Import</b></p>
+
+<p>Můžete importovat jeden HTML soubor nebo všechny soubory ve složce.</p>
+
+<p>Relativní odkazy jsou převedeny na odkazy na kapitoly. Odkazy na obrázky, flash a Javu jsou rovněž upraveny.</p>
diff --git a/lang/cs_utf8/help/book/index.html b/lang/cs_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..b867e33
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Modul Kniha</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Číslování kapitol</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Zakázat tisknutí</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Uživatelské nadpisy</a>
+  <li><a href="help.php?module=book&file=summary.html">Souhrn</a>
+  <li><a href="help.php?module=book&file=edit.html">Úprava kapitol</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">Časté otázky</a>
+</ul>
+
diff --git a/lang/cs_utf8/help/book/mods.html b/lang/cs_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..6cbac92
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Knihy</b></p>
+<ul>
+<p>Kniha je jednoduchý vícestránkový studijní materiál.</p>
+</ul>
diff --git a/lang/cs_utf8/help/book/numberingtype.html b/lang/cs_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..aa9f93e
--- /dev/null
@@ -0,0 +1,14 @@
+<p align="center"><b>Číslování kapitol</b></p>
+
+<p>Existuje několik předdefinovaných typů číslování:
+
+<p><b>Žádné</b> - kapitoly a podkapitoly nejsou formátované, používejte v přípaže,
+když chcete zadat vaše vlastní číslování. Například: do pole nadpis kapitoly zadejte
+"A Úvod", "A.1 Nějaké Povídání", ...</p>
+
+<p><b>Čísla</b> - kapitoly a podkapitoly jsou číslované (1, 1.1, 1.2, 2, ...)<p>
+
+<p><b>Puntíky</b> - podkapitoly jsou odsazené a zvýrazněné puntíky.<p>
+
+<p><b>Odsazené</b> - podkapitoly jsou odsazené.</p>
+
diff --git a/lang/cs_utf8/help/book/summary.html b/lang/cs_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..b0b86f3
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Souhrn</b></p>
+
+<p>Stručný obsah knihy.</p>
+
+<p>Snažte se o opravdu krátký a výstižný popis.</p>
\ No newline at end of file
diff --git a/lang/de_utf8/book.php b/lang/de_utf8/book.php
new file mode 100644 (file)
index 0000000..dd6c778
--- /dev/null
@@ -0,0 +1,48 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:02 skodak Exp $
+
+$string['modulename'] = 'Buch';
+$string['modulenameplural'] = 'Bücher';
+
+$string['toc'] = 'Inhaltsverzeichnis';
+$string['tocwidth'] = 'Wählen Sie die Breite des Inhaltsverzeichnisses für alle Bücher aus.';
+$string['faq'] = 'Buch FAQ';
+
+$string['disableprinting'] = 'Drucken deaktivieren';
+$string['customtitles'] = 'Angepasster Titel';
+
+$string['editingchapter'] = 'Kapitel ändern';
+$string['chaptertitle'] = 'Titel des Kapitels';
+$string['content'] = 'Inhalte';
+$string['subchapter'] = 'Unterkapitel';
+
+$string['numbering'] = 'Kapitelnummerierung';
+$string['numbering0'] = 'Keine';
+$string['numbering1'] = 'Nummern';
+$string['numbering2'] = 'Punkte';
+$string['numbering3'] = 'Eingerückt';
+
+$string['chapterscount'] = 'Kapitel';
+
+$string['addafter'] = 'Neues Kapitel hinzufügen';
+$string['confchapterdelete'] = 'Wollen Sie dieses Kapitel wirklich löschen?';
+$string['confchapterdeleteall'] = 'Wollen Sie dieses Kapitel und alle Unterkaitel wirklich löschen?';
+
+$string['printbook'] = 'Das komplette Buch ausdrucken';
+$string['printchapter'] = 'Dieses Kapitel ausdrucken';
+$string['printdate'] = 'Datum';
+$string['printedby'] = 'Ausgedruckt von';
+$string['top'] = 'Anfang';
+
+$string['navprev'] = 'zurück';
+$string['navnext'] = 'weiter';
+
+$string['importingchapters'] = 'Kapitel in das Buch importieren';
+$string['import'] = 'Import';
+$string['doimport'] = 'Import';
+$string['importing'] = 'Importiert';
+$string['relinking'] = 'Verlinken';
+$string['importinfo'] = 'Importiert die gewählten HTML Dateien oder Ordner.<br />Kapitel sind alphabetisch nach den Dateinamen sortiert.';
+$string['maindirectory'] = 'Hauptordner';
+$string['fileordir'] = 'Datei oder Ordner';
+
+?>
diff --git a/lang/de_utf8/help/book/customtitles.html b/lang/de_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..7aa14ab
--- /dev/null
@@ -0,0 +1,3 @@
+<p align=center><b>Eigene Titel</b></p>
+
+<p>Kapiteltitel werden automatisch nur in der TOC angezeigt.</p>
diff --git a/lang/de_utf8/help/book/disableprinting.html b/lang/de_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..d5b2b19
--- /dev/null
@@ -0,0 +1,3 @@
+<p align=center><b>Drucken ausgeschaltet</b></p>
+
+<p>Verstecken der Druck Icons.</p>
diff --git a/lang/de_utf8/help/book/edit.html b/lang/de_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..60a50dc
--- /dev/null
@@ -0,0 +1,7 @@
+<p align=center><b>Kapiteländerung</b></p>
+
+<p>Versuchen Sie Titel der Kapitel kurz zu halten.</p>
+
+<p>Maximal zwei Stufe können die Unterkapitel haben.</p>
+
+<p>Wenn SIe Probleme mit dem WYSIWYG HTML Editor haben, versuchen Sie einen anderen Browser z.B. Mozilla Firefox zu benutzen oder schlaten Sie den Editor im Profil ab.</p>
\ No newline at end of file
diff --git a/lang/de_utf8/help/book/faq.html b/lang/de_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..608e943
--- /dev/null
@@ -0,0 +1,34 @@
+<p align=center><b>Frequently Asked Questions über Bücher</b></p>
+
+<dl>
+  <dt><b>Warum nur zwei Stufen?</b></dt>
+  <dd>Zwei Stufen sind genug für alle Bücher, drei Stufen würden zu einem
+schlecht strukturierte Dokumnt führen. Das Buch Modul wurde für die Erstellung
+von kurzen Inhalten entwickelt. Für größere und komplexere Dokumente macht es
+mehr Sinn das PDF Format zu benutzen. Am einfachsten können Sie PDF Dateien mit
+den folgenden Programmen erzeugen
+ (see <a
+ href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"
+ target="_blank">PDFCreator</a>, <a
+ href="http://fineprint.com/products/pdffactory/index.html"
+ target="_blank">PDF
+Factory</a>, <a
+ href="http://www.adobe.com/products/acrobatstd/main.html"
+ target="_blank">Adobe Acrobat</a>,
+etc.).<br />
+  </dd><br />
+  <dt><b>Können Lerner Bücher editieren?</b></dt>
+  <dd>Nur Lehrer können Bücher erstellen und ändern. Es ist nicht geplant 
+auch für Lerner zu ermöglichen. Aber vielleicht findet sich ja jemand
+diese Funktion auch für Lerner erstellt. Der Hauptgrund ist jedoch, daß das 
+Buch Modul so simpel wie möglich bleiben sollt.</dd><br />
+  <dt><b>Wie kann ich in Büchern suchen?</b></dt>
+  <dd>Zur Zeit gibt es nur die Möglichkeit mit der Browsersuchfunktion
+in einem Buch zu suchen. Eine globale Suche ist nur in Moodle Foren möglich.
+Es wäre toll wenn es eine Art globale Suche für alle Resourcen auch Bücher 
+in moddle geben würde. Gibt es evtl. jemanden der dies Umsetzen könnte?</dd><br />
+  <dt><b>Mei Titel passt nicht in eine Zeile.</b></dt>
+  <dd>Ändern SIe Ihren Titel oder bitten Sie Ihren Administrator der Webseite darum,
+daß er die Breite des TOC vergrößert. Dies ist global für alle Bücher in der Modul
+Konfigurationsseite einstellbar.</dd><br />
+</dl>
diff --git a/lang/de_utf8/help/book/import.html b/lang/de_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..201e8c2
--- /dev/null
@@ -0,0 +1,5 @@
+<p align=center><b>Import</b></p>
+
+<p> Sie können eine einzelnes HTML Datei importieren oder jede HTML Datei in einem Ordner.</p>
+
+<p> Relative Datei Verknüpfungen werden zu absoluten Kapitelverlinkungen konvertiert. Bilder, Flash und Java Inhalte werden ebenfalls verlinkt.</p>
diff --git a/lang/de_utf8/help/book/index.html b/lang/de_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..e99b390
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Book module</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Kapitelnummerierung</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Drucken ausschalten</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Eigene Titel</a>
+  <li><a href="help.php?module=book&file=summary.html">Zusammenfassung lesen</a>
+  <li><a href="help.php?module=book&file=edit.html">Kapitel ändern</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">Buch FAQ</a>
+</ul>
+
diff --git a/lang/de_utf8/help/book/mods.html b/lang/de_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..0cbf5aa
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign=absmiddle src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Books</b></p>
+<ul>
+<p>Das Buch ist ein simples mehrseitiges Studienmaterial.</p>
+</ul>
diff --git a/lang/de_utf8/help/book/numberingtype.html b/lang/de_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..e79717c
--- /dev/null
@@ -0,0 +1,14 @@
+<p align=center><b>Nummerierung von Kapiteln</b></p>
+
+<p>Es gibt verschiedene vordefinierte Nummerierungstypen:
+
+<p><b>Keine</b> - Kapitel und die Titel der Unterkapitel sind nicht formatiert, Sie können
+selber eigene Styles zur Nummerierung benutzen. Zum Beispiel Buchstaben: Im Kapitel Titel
+geben Sie dann folgendes ein "A Erstes Kapitel", "A.1 ein Unterkapitel",...</p>
+
+<p><b>Nummern</b> - Kapitel und Unterkapitel sind nummeriert (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Kugeln</b> - Unterkapitel sind eingerückt und werden mit führenden Kugeln angezeigt.<p>
+
+<p><b>Eingerückt</b> - Unterkapitel sind eingerückt.</p>
diff --git a/lang/de_utf8/help/book/summary.html b/lang/de_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..6ffdf0f
--- /dev/null
@@ -0,0 +1,5 @@
+<p align=center><b>Reading Summary</b></p>
+
+<p>Diese Einführung ist eine sehr kurze Beschreibung des Buches.</p>
+
+<p>Schreiben Sie hier nicht zu viel hinein!</p>
\ No newline at end of file
diff --git a/lang/en_utf8/book.php b/lang/en_utf8/book.php
new file mode 100644 (file)
index 0000000..19113cd
--- /dev/null
@@ -0,0 +1,49 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:04 skodak Exp $
+
+$string['modulename'] = 'Book';
+$string['modulenameplural'] = 'Books';
+
+$string['toc'] = 'Table of Contents';
+$string['tocwidth'] = 'Select width of the Table of Contents for all books.';
+$string['faq'] = 'Book FAQ';
+
+$string['disableprinting'] = 'Disable Printing';
+$string['customtitles'] = 'Custom Titles';
+
+$string['editingchapter'] = 'Editing chapter';
+$string['chaptertitle'] = 'Chapter Title';
+$string['content'] = 'Content';
+$string['subchapter'] = 'Subchapter';
+
+$string['numbering'] = 'Chapter Numbering';
+$string['numbering0'] = 'None';
+$string['numbering1'] = 'Numbers';
+$string['numbering2'] = 'Bullets';
+$string['numbering3'] = 'Indented';
+
+$string['chapterscount'] = 'Chapters';
+
+$string['addafter'] = 'Add new chapter';
+$string['confchapterdelete'] = 'Do you really want to delete this chapter?';
+$string['confchapterdeleteall'] = 'Do you really want to delete this chapter and all its subchapters?';
+
+$string['printbook'] = 'Print Complete Book';
+$string['printchapter'] = 'Print This Chapter';
+$string['printdate'] = 'Date';
+$string['printedby'] = 'Printed by';
+$string['top'] = 'top';
+
+$string['navprev'] = 'Previous';
+$string['navnext'] = 'Next';
+$string['navexit'] = 'Exit Book';
+
+$string['importingchapters'] = 'Importing chapters into book';
+$string['import'] = 'Import';
+$string['doimport'] = 'Import';
+$string['importing'] = 'Importing';
+$string['relinking'] = 'Relinking';
+$string['importinfo'] = 'Import selected HTML file or directory.<br />Chapters are sorted alphabetically using file names.<br />Files named \'sub_*.*\' are always imported as subchapters.';
+$string['maindirectory'] = 'Main directory';
+$string['fileordir'] = 'File or directory';
+
+?>
diff --git a/lang/en_utf8/help/book/customtitles.html b/lang/en_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..0e5b330
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Custom Titles</b></p>
+
+<p>Chapter titles are displayed automatically only in TOC.</p>
diff --git a/lang/en_utf8/help/book/disableprinting.html b/lang/en_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..2f36357
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Disable Printing</b></p>
+
+<p>Hide print icons.</p>
diff --git a/lang/en_utf8/help/book/edit.html b/lang/en_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..9c51f79
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Chapter editing</b></p>
+
+<p>Try to keep the chapter title short.</p>
+
+<p>Maximum level of subchapters is two.</p>
+
+<p>If you have encounter problems when using WYSIWYG html editor, try switching to another browser (such as Mozilla Firefox) or turn off the editor completely in your profile.</p>
\ No newline at end of file
diff --git a/lang/en_utf8/help/book/faq.html b/lang/en_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..6f42283
--- /dev/null
@@ -0,0 +1,51 @@
+<p align="center">
+  <b>Frequently Asked Questions about Books</b>
+</p>
+<dl>
+  <dt>
+    <b>Why only two levels?</b>
+  </dt>
+  <dd>
+    Two levels are generally enough for all books, three levels would
+    lead to poorly structured documents. Book module is designed for
+    creation of short multipage study materials. It is usually better to
+    use PDF format for longer documents. The easiest way to create PDFs are
+    virtual printers (see
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    etc.).
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Can students edit books?</b>
+  </dt>
+  <dd>
+    Only teachers can create and edit books. There are no plans to
+    implement student editing for books, but somebody may create something
+    similar for students (Portfolio?). The main reason is to keep Book
+    module as simple as possible.
+  </dd>
+  <br />
+  <dt>
+    <b>How do I search the books?</b>
+  </dt>
+  <dd>
+    At present there is only one way, use browser's search capability
+    in print page. Global searching is now possible only in Moodle forums.
+    It would be nice to have global searching for all resources including
+    books, any volunteers?
+  </dd>
+  <br />
+  <dt>
+    <b>My titles do not fit on one line.</b>
+  </dt>
+  <dd>
+    Either rephrase your titles or ask your site admin to change TOC
+    width. It is defined globally for all books in module configuration
+    page.
+  </dd>
+  <br />
+</dl>
diff --git a/lang/en_utf8/help/book/import.html b/lang/en_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..7a62beb
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Import</b></p>
+
+<p>You can import a single HTML file or every HTML file in a direcory.</p>
+
+<p>Relative file links are converted to absolute chapter links. Images, flash and Java are relinked too.</p>
diff --git a/lang/en_utf8/help/book/index.html b/lang/en_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..752692e
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Book module</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Chapter Numbering</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Disable Printing</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Custom Titles</a>
+  <li><a href="help.php?module=book&file=summary.html">Reading Summary</a>
+  <li><a href="help.php?module=book&file=edit.html">Chapter editing</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">Book FAQ</a>
+</ul>
+
diff --git a/lang/en_utf8/help/book/mods.html b/lang/en_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..a29ff57
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Books</b></p>
+<ul>
+<p>Book is a simple multipage study material</p>
+</ul>
diff --git a/lang/en_utf8/help/book/numberingtype.html b/lang/en_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..d2f9476
--- /dev/null
@@ -0,0 +1,14 @@
+<p align="center"><b>Numbering of Chapters</b></p>
+
+<p>There are several predefined numbering types:
+
+<p><b>None</b> - chapter and subchapter titles are not formatted at all, use
+if you want to define special numbering styles. For example letters: in chapter
+title type "A First Chapter", "A.1 Some Subchapter",...</p>
+
+<p><b>Numbers</b> - chapters and subchapters are numbered (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Bullets</b> - subchapters are indented and displayed with bullets.<p>
+
+<p><b>Indented</b> - subchapters are indented.</p>
diff --git a/lang/en_utf8/help/book/summary.html b/lang/en_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..5f04a70
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Reading Summary</b></p>
+
+<p>The summary is a very short description of the book.</p>
+
+<p>Do not be tempted to write too much here!</p>
\ No newline at end of file
diff --git a/lang/es_utf8/book.php b/lang/es_utf8/book.php
new file mode 100644 (file)
index 0000000..fe5e4b4
--- /dev/null
@@ -0,0 +1,32 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:03 skodak Exp $
+      // book.php - created with Moodle 1.3 (2004052500)
+      // book.php - Translated to Spanish by Juan Luis Martinez from Dominican Republic (fernluichi@hotmail.com)
+
+$string['addafter'] = 'Agregar un nuevo Cápitulo';
+$string['chapterscount'] = 'Cápitulos';
+$string['chaptertitle'] = 'Título del Cápitulo';
+$string['confchapterdelete'] = 'En Realidad Desea Eliminar este Cápitulo?';
+$string['content'] = 'Contenido';
+$string['faq'] = 'Libro FAQ';
+$string['hidepreview'] = 'Atrás para Modo Edición';
+$string['modulename'] = 'Libro';
+$string['modulenameplural'] = 'Libros';
+$string['navexit'] = 'Salir del Libro';
+$string['navnext'] = 'Siguiente';
+$string['navprev'] = 'Anterior';
+$string['numbering'] = 'Número del Cápitulo';
+$string['numbering0'] = 'Nada';
+$string['numbering1'] = 'Númerica';
+$string['numbering2'] = 'Viñetas';
+$string['numbering3'] = 'Indentidad';
+$string['printbook'] = 'Imprimir el Libro Completo';
+$string['printchapter'] = 'Imprimir este Cápitulo';
+$string['printdate'] = 'Día';
+$string['printedby'] = 'Imprimido por';
+$string['showpreview'] = 'Mostrar TOC Preliminar';
+$string['subchapter'] = 'Subcápitulo';
+$string['toc'] = 'Tabla de Contenido';
+$string['tocwidth'] = 'Seleciona el Ancho de la Tabla de Contenidos de Todos los Libros.';
+$string['top'] = 'arriba';
+
+?>
diff --git a/lang/fi_utf8/book.php b/lang/fi_utf8/book.php
new file mode 100644 (file)
index 0000000..70678be
--- /dev/null
@@ -0,0 +1,43 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:03 skodak Exp $ 
+      // book.php - created with Moodle 1.5 unstable development (2004092000)
+
+
+$string['addafter'] = 'Lisää uusi luku';
+$string['chapterscount'] = 'Luvut';
+$string['chaptertitle'] = 'Luvun otsikko';
+$string['confchapterdelete'] = 'Haluatko varmasti poistaa tämän luvun?';
+$string['confchapterdeleteall'] = 'Haluatko varmasti poistaa tämän luvun ja sen alaluvut?';
+$string['content'] = 'Sisältö';
+$string['customtitles'] = 'Mukautetut otsikot';
+$string['disableprinting'] = 'Estä tulostus';
+$string['doimport'] = 'Tuo';
+$string['editingchapter'] = 'Luvun muokkaus';
+$string['faq'] = 'Usein kysytyt kysymykset';
+$string['fileordir'] = 'Tiedosto tai kansio';
+$string['import'] = 'Tuo';
+$string['importinfo'] = 'Tuo valittu HTML-tiedosto tai kansio.<br />Luvut aakkostetaan tiedostonimien mukaan.';
+$string['importing'] = 'Tuodaan';
+$string['importingchapters'] = 'Tuodaan kirjan lukuja';
+$string['maindirectory'] = 'Päävalikko';
+$string['modulename'] = 'Kirja';
+$string['modulenameplural'] = 'Kirjat';
+$string['navnext'] = 'Seuraava';
+$string['navprev'] = 'Edellinen';
+$string['numbering'] = 'Lukujen numerointi';
+$string['numbering0'] = 'Ei mitään';
+$string['numbering1'] = 'Numerot';
+$string['numbering2'] = 'Luettelomerkit';
+$string['numbering3'] = 'Sisennys';
+$string['printbook'] = 'Tulosta koko kirja';
+$string['printchapter'] = 'Tulosta tämä luku';
+$string['printdate'] = 'Tulostettu';
+$string['printedby'] = 'Tulostanut';
+$string['relinking'] = 'Uudelleenlinkitys';
+$string['subchapter'] = 'Alaluku';
+$string['thisdirection'] = 'ltr';
+$string['thislanguage'] = 'Suomi';
+$string['toc'] = 'Sisällysluettelo';
+$string['tocwidth'] = 'Valitse kaikkien kirjojen sisällysluetteloiden leveys.';
+$string['top'] = 'Alkuun';
+
+?>
diff --git a/lang/fi_utf8/help/book/customtitles.html b/lang/fi_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..536cdd7
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Mukautetut otsikot</b></p>
+
+<p>Mukautetut otsikot n&auml;ytet&auml;&auml;n automaattisesti vain sis&auml;llysluettelossa.</p>
diff --git a/lang/fi_utf8/help/book/disableprinting.html b/lang/fi_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..3bade02
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Est&auml; tulostus</b></p>
+
+<p>Piilottaa tulostuspainikkeet.</p>
diff --git a/lang/fi_utf8/help/book/edit.html b/lang/fi_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..3cda153
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Lukujen muokkaus</b></p>
+
+<p>Pid&auml; lukujen otsikot mahdollisimman lyhyen&auml;.</p>
+
+<p>Lukuja voi olla korkeintaan kahta eri tasoa.</p>
+
+<p>Jos sinulla on ongelmia visuaalisen muokkausty&ouml;kalun kanssa, kokeile selaimen vaihtamista esimerkiksi Mozilla Firefoxiin, tai poista visuaalinen muokkausty&ouml;kalu (Richtext HTML -editori) k&auml;yt&ouml;st&auml; profiilin asetuksistasi.</p>
\ No newline at end of file
diff --git a/lang/fi_utf8/help/book/faq.html b/lang/fi_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..bb2d71e
--- /dev/null
@@ -0,0 +1,56 @@
+<p align="center">
+  <b>Usein kysyttyj&auml; kysymyksi&auml; Kirja-moduulista</b>
+</p>
+<dl>
+  <dt>
+    <b>Miksi tasoja on vain kaksi?</b>
+  </dt>
+  <dd>
+    Kaksi tasoa riitt&auml;&auml; yleens&auml; kaikille kirjoille, kolme
+    tasoa johtaisi huonompiin asiakirjojen rakenteisiin. Kirja-moduuli on
+    suunniteltu lyhyiden monisivuisten oppimateriaalien luomiseen. Pidemm&auml;t
+    asiakirjat kannattaa yleens&auml; tallentaa PDF-muodossa. Helpoin tapa luoda
+    PDF-tiedostoja on k&auml;ytt&auml;&auml; virtuaalitulostimia (katso
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    ja niin edelleen).
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Voivatko oppilaat muokata kirjoja?</b>
+  </dt>
+  <dd>
+    Vain opettajat voivan luoda ja muokata kirjoja. Oppilaiden muokattavissa
+    olevien kirjojen toteuttaminen ei ole suunnitelmissa. On kuitenkin mahdollista,
+    ett&auml; joku toteuttaa vastaavan toiminnallisuuden my&ouml;s oppilaille,
+    kuten esimerkiksi oppilasportfolion. T&auml;m&auml; p&auml;&auml;t&ouml;s on
+    tehty Kirja-moduulin pit&auml;miseksi mahdollisimman yksinkertaisena.
+  </dd>
+  <br />
+  <dt>
+    <b>Kuinka voin etsi&auml; teksti&auml; kirjoista?</b>
+  </dt>
+  <dd>
+    Toistaiseksi teksti&auml; kirjoista voi etsi&auml; vain yhdell&auml; tavalla:
+    selaimen tekstinhakutoiminnolla. Jos tulostustoiminto on k&auml;yt&ouml;ss&auml;,
+    voit valita koko kirjan tulostettavaksi ja etsi&auml; teksti&auml; t&auml;lt&auml;
+    sivulta (&auml;l&auml; kuitenkaan tarpeettomasti tulosta kirjaa).
+    Vapaa sanahaku on k&auml;yt&ouml;ss&auml; l&auml;hinn&auml; vain Moodlen keskustelupalstoilla.
+    Muistakin Moodlen resursseista olisi mukava voida etsi&auml; teksti&auml;, l&ouml;ytyyk&ouml;
+    toiminnallisuuden toteuttajiksi vapaaehtoisia?
+  </dd>
+  <br />
+  <dt>
+    <b>Otsikkoni eiv&auml;t mahdu yhdelle riville.</b>
+  </dt>
+  <dd>
+    Muotoile otsikkotekstit uudelleen tai levenn&auml; sis&auml;llysluettelolle
+    varattua tilaa. Sis&auml;llysluettelon tilaa voi levent&auml;&auml;
+    moduulin asetusten m&auml;&auml;ritt&auml;missivulla. (T&auml;m&auml; toiminto
+    on vain yll&auml;pit&auml;jien k&auml;ytett&auml;viss&auml;).
+  </dd>
+  <br />
+</dl>
diff --git a/lang/fi_utf8/help/book/import.html b/lang/fi_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..be15342
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Tuo</b></p>
+
+<p>Voit tuoda moduuliin yksitt&auml;isen HTML-tiedoston tai kaikki tietyn kansion HTML-tiedostot.</p>
+
+<p>Suhteelliset linkit muutetaan absoluuttisiksi linkeiksi. Kuvat, Flash-, ja Java-tiedostot linkitet&auml;&auml;n my&ouml;s uudelleen.</p>
diff --git a/lang/fi_utf8/help/book/index.html b/lang/fi_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..752692e
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Book module</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Chapter Numbering</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Disable Printing</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Custom Titles</a>
+  <li><a href="help.php?module=book&file=summary.html">Reading Summary</a>
+  <li><a href="help.php?module=book&file=edit.html">Chapter editing</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">Book FAQ</a>
+</ul>
+
diff --git a/lang/fi_utf8/help/book/mods.html b/lang/fi_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..650bfd9
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Kirjat</b></p>
+<ul>
+<p>Kirja on yksinkertainen monisivuinen oppimateriaalikokonaisuus</p>
+</ul>
diff --git a/lang/fi_utf8/help/book/numberingtype.html b/lang/fi_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..40150a9
--- /dev/null
@@ -0,0 +1,16 @@
+<p align="center"><b>Lukujen numerointi</b></p>
+
+<p>Lukujen numerointiin on useita tapoja:
+
+<p><b>Ei mit&auml;&auml;n</b> - lukujen ja alalukujen otsikoita ei muotoilla mitenk&auml;&auml;n.
+K&auml;yt&auml; t&auml;t&auml; vaihtoehtoa, jos haluat m&auml;&auml;ritell&auml; oman, erikoisemman
+numerointitapasi. Voit numeroida luvut esimerkiksi kirjaimia k&auml;ytt&auml;en: kirjoita
+luvun otsikoksi "A Ensimm&auml;inen luku", "A.1 Alaluku" ja niin edelleen.
+</p>
+
+<p><b>Numerot</b> - luvut ja alaluvut merkit&auml;&auml;n numeroin (1, 1.1, 1.2, 2 ja niin edelleen).
+<p>
+
+<p><b>Luettelomerkit</b> - alalukujen otsikot sisennet&auml;&auml;n ja niiden edess&auml; n&auml;kyy luettelomerkki.<p>
+
+<p><b>Sisennys</b> - alalukujen otsikot sisennet&auml;&auml;n.</p>
diff --git a/lang/fi_utf8/help/book/summary.html b/lang/fi_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..31778fc
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Yhteenveto</b></p>
+
+<p>Yhteenveto on hyvin lyhyt kuvaus kirjasta.</p>
+
+<p>&Auml;l&auml; tee kuvauksesta liian pitk&auml;&auml;!</p>
\ No newline at end of file
diff --git a/lang/fr_utf8/book.php b/lang/fr_utf8/book.php
new file mode 100644 (file)
index 0000000..c4ce5ee
--- /dev/null
@@ -0,0 +1,46 @@
+<?php // $Id: book.php,v 1.1 2006/03/12 18:40:05 skodak Exp $
+
+$string['modulename'] = 'Livre';
+$string['modulenameplural'] = 'Livre';
+
+$string['toc'] = 'Table des matières';
+$string['faq'] = 'FAQ sur les livres';
+
+$string['chaptertitle'] = 'Titre du chapitre';
+$string['content'] = 'Contenu';
+$string['subchapter'] = 'Sous-chapitre';
+
+$string['numbering'] = 'Numérotation des chapitres';
+$string['numbering0'] = 'Aucune';
+$string['numbering1'] = 'Nombres';
+$string['numbering2'] = 'Puces';
+$string['numbering3'] = 'Indentation';
+
+$string['chapterscount'] = 'Chapitres';
+
+$string['addafter'] = 'Ajouter un nouveau chapitre';
+$string['confchapterdelete'] = 'Voulez-vous vraiment supprimer ce chapitre ?';
+$string['confchapterdeleteall'] = 'Voulez-vous vraiment supprimer ce chapitre et tous ses sous-chapitres ?';
+
+$string['printbook'] = 'Imprimer tout le livre';
+$string['printchapter'] = 'Imprimer ce chapitre';
+$string['printdate'] = 'Date';
+$string['printedby'] = 'Imprimé par';
+$string['top'] = 'Haut';
+
+$string['navprev'] = 'Précédent';
+$string['navnext'] = 'Suivant';
+
+$string['tocwidth'] = 'Largeur (en pixels) de la table des matières des livres.';
+
+$string['import'] = 'Importation';
+$string['doimport'] = 'Importer';
+$string['importing'] = 'Importation';
+$string['importallinfo'] = 'Importer tous les fichiers HTML du dossier choisi&nbsp;;<br />les chapitres ont triés alphabétiquement sur la base des noms de fichiers.
+                            <br /><h3>CETTE FONCTIONNALITÉ EST EXPÉRIMENTALE ;-)</h3>';
+$string['maindirectory'] = 'Dossier principal';
+$string['selectdir'] = 'Choisir le dossier du cours';
+
+$string['relinking'] = 'Mise à jour des liens';
+
+?>
\ No newline at end of file
diff --git a/lang/id_utf8/book.php b/lang/id_utf8/book.php
new file mode 100644 (file)
index 0000000..a858d9c
--- /dev/null
@@ -0,0 +1,49 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:05 skodak Exp $
+
+$string['modulename'] = 'Buku';
+$string['modulenameplural'] = 'Buku-buku';
+
+$string['toc'] = 'Daftar Isi';
+$string['faq'] = 'Pertanyaan yang Sering Diajukan tentang Buku';
+
+$string['chaptertitle'] = 'Judul Bab';
+$string['content'] = 'Isi';
+$string['subchapter'] = 'Subbab';
+
+$string['numbering'] = 'Penomoran Bab';
+$string['numbering0'] = 'Tidak ada';
+$string['numbering1'] = 'Nomor';
+$string['numbering2'] = 'Bullets';
+$string['numbering3'] = 'Indentasi';
+
+$string['chapterscount'] = 'Bab';
+
+$string['addafter'] = 'Tambah Bab baru';
+$string['confchapterdelete'] = 'Anda benar-benar ingin menghapus bab ini?';
+$string['confchapterdeleteall'] = 'Anda bener-benar ingin menghapus bab ini dan semua subbab-nya?';
+
+$string['printbook'] = 'Cetak seluruh bab pada buku ini';
+$string['printchapter'] = 'Cetak bab ini';
+$string['printdate'] = 'Tanggal';
+$string['printedby'] = 'Dicetak Oleh';
+$string['top'] = 'atas';
+
+$string['navprev'] = 'Sebelumnya';
+$string['navnext'] = 'Selanjutnya';
+
+#$string['tocwidth'] = 'Select width of the Table of the Contents for all books.';
+$string['tocwidth'] = 'Pilih lebar Tabel untuk semua buku';
+
+$string['import'] = 'Import';
+$string['doimport'] = 'Import';
+$string['importing'] = 'Meng-Impor';
+$string['importinfo'] = 'Import file  HTML yang terpilih  atau direktori yang diberikan,<br />bab diurutkan secara alfabetis berdasarkan nama file.
+                            <br /><h3>Ini adalah FEATURE UJICOBA ;-)</h3>';
+$string['maindirectory'] = 'Direktori utama';
+$string['chooseafileordir'] = 'Pilih sebuah file atau direktori';
+
+$string['relinking'] = 'Relinking';
+
+
+
+?>
diff --git a/lang/id_utf8/help/book/faq.html b/lang/id_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..6bd35fb
--- /dev/null
@@ -0,0 +1,37 @@
+<p ALIGN=CENTER><b>FAQ tentang Buku</b></p>
+
+<dl>
+  <dt><b>Kenapa hanya dua level?</b></dt>
+  <dd>Dua level secara umum sudah cukup untuk seluruh buku, 
+  tiga level jusru akan menyebabkan struktur dokumen tidak terlalu bagus. 
+  Module buku di desain untuk membuat materi multi halaman yang  pendek . 
+  Biasanya lebih baik menggunakan format PDF untuk dokumen yang lebih panjang.
+  Cara termudah untuk membuat PDF adalah dengan menggunakan printer virtual 
+  (lihat <a
+ href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"
+ target="_blank">PDFCreator</a>, <a
+ href="http://fineprint.com/products/pdffactory/index.html"
+ target="_blank">PDF
+Factory</a>, <a
+ href="http://www.adobe.com/products/acrobatstd/main.html"
+ target="_blank">Adobe Acrobat</a>,
+etc.).<br />
+  </dd><br />
+  <dt><b>Bisakah Mahasiswa meng-edit buku ?</b></dt>
+  <dd>Hanya Dosen yang dapat mebuat dan mengedit buku.Tidak ada rencana
+untuk memngimplementasikan hak edit pada mahasiswa pada buku,seseorang 
+mungkin dapat membuat sesuatu yang persis untuk mahasiawa (Portfolio?).
+Ini adalah alasan utma membuat modul buku sesederhana mungkin.</dd><br />
+  <dt><b>Bagaimana saya mencari buku?</b></dt>
+  <dd>Untuk sekarang hanya ada satu cara, gunakan kemampuan browser 
+  untuk mencari pada halaman cetak.Pencarian Global sekarang memungkinkan 
+  di forum Moodle.
+  Akan sangat menyenangkan  memiliki kemampuan pencarian global
+  untuk semua resource termasuk buku, ada voluneteer ?
+ </dd><br />
+  <dt><b>Judul saya cukup satu baris. ?</b></dt>
+  <dd>Buat singkatan untuk judul anda atau tanyakan admin situs untuk
+      mengubah  lebar daftar isi. 
+Ini didefinisikan secara global untuk semua buku pada kalaman konfogurasi modul.
+</dd><br />
+</dl>
diff --git a/lang/id_utf8/help/book/index.html b/lang/id_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..238da9a
--- /dev/null
@@ -0,0 +1,7 @@
+<p>Modul buku</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Penomoran Bab</a>
+  <li><a href="help.php?module=book&file=summary.html">Baca RIngkasan</a>
+  <li><a href="help.php?module=book&file=faq.html">FAQ Buku</a>
+</ul>
+
diff --git a/lang/id_utf8/help/book/mods.html b/lang/id_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..c91bb2f
--- /dev/null
@@ -0,0 +1,5 @@
+<p><img VALIGN=absmiddle SRC="<?php echo
+$CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Buku</b></p>
+<ul>
+<p>Buku adalah materi pelajaran  multi-halaman sederhana</p>
+</ul>
diff --git a/lang/id_utf8/help/book/numberingtype.html b/lang/id_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..f0eef88
--- /dev/null
@@ -0,0 +1,15 @@
+<p ALIGN=CENTER><b>Penomoran Bab</b></p>
+
+<p>Ada beberapa tipe penomoran yang telah ditentukan :
+
+<p><b>None</b> - Jusul bab and subbab  tidak diformat sama sekali, gunakan
+ini jika anda ingin mendefinisikan style penomoran sendiri.
+Sebagai contoh huruf: pada judul bab tulis "
+tipe judul "Bab Pertama", "B.1 beberapa subbab",...</p>
+
+<p><b>Numbered</b> - bab dan subbab diberi nomor (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Bullets</b> - subbab di beri indentasi dan ditampilkan dengan bullet.<p>
+
+<p><b>Indented</b> - subbab diindent.</p>
diff --git a/lang/id_utf8/help/book/summary.html b/lang/id_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..e9f998e
--- /dev/null
@@ -0,0 +1,5 @@
+<p ALIGN=CENTER><b>Membaca Ringkasan</b></p>
+
+<p>Ringkasan adalah dekripsi singkat tentang buku.
+
+<p>Jangan terlalu banyak menulis disini!
diff --git a/lang/it_utf8/book.php b/lang/it_utf8/book.php
new file mode 100644 (file)
index 0000000..0d24a5d
--- /dev/null
@@ -0,0 +1,49 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:02 skodak Exp $
+
+$string['modulename'] = 'Antologia';
+$string['modulenameplural'] = 'Antologie';
+
+$string['toc'] = 'Sommario';
+$string['tocwidth'] = 'Larghezza in pixel del Sommario per tutte le Antologie.';
+$string['faq'] = 'FAQ Modulo Antologia';
+
+$string['disableprinting'] = 'Escludi la stampa';
+$string['customtitles'] = 'Titoli personalizzati';
+
+$string['editingchapter'] = 'Modifica del capitolo';
+$string['chaptertitle'] = 'Titolo del Capitolo';
+$string['content'] = 'Contenuto';
+$string['subchapter'] = 'Paragrafo';
+
+$string['numbering'] = 'Numerazione dei capitoli';
+$string['numbering0'] = 'Nessuna numerazione';
+$string['numbering1'] = 'Numeri';
+$string['numbering2'] = 'Elenco puntato';
+$string['numbering3'] = 'Elenco rientrato';
+
+$string['chapterscount'] = 'Capitoli';
+
+$string['addafter'] = 'Aggiungi un nuovo capitolo';
+$string['confchapterdelete'] = 'Sei sicuro di voler cancellare questo capitolo?';
+$string['confchapterdeleteall'] = 'Sei sicuro di voler cancellare questo capitolo e tutti i suoi paragrafi?';
+
+$string['printbook'] = 'Stampa tutto';
+$string['printchapter'] = 'Stampa questo capitolo';
+$string['printdate'] = 'Data';
+$string['printedby'] = 'Stampato da';
+$string['top'] = 'Ritorna su';
+
+$string['navprev'] = 'Pagina precedente';
+$string['navnext'] = 'Pagina successiva';
+$string['navexit'] = 'Chiudi';
+
+$string['importingchapters'] = 'Importazione dei capitoli';
+$string['import'] = 'Importa';
+$string['doimport'] = 'Importa';
+$string['importing'] = 'Importazione in corso';
+$string['relinking'] = 'Elaborazione dei collegamenti';
+$string['importinfo'] = 'Importa un file HTML oppure un folder.<br />I capitoli saranno ordinati alfabeticamante utilizzando i nomi dei file.';
+$string['maindirectory'] = 'Folder principale';
+$string['fileordir'] = 'Scegli un file oppure un folder';
+
+?>
diff --git a/lang/ja_utf8/book.php b/lang/ja_utf8/book.php
new file mode 100644 (file)
index 0000000..68bd61e
--- /dev/null
@@ -0,0 +1,48 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:04 skodak Exp $
+
+$string['modulename'] = 'ブック';
+$string['modulenameplural'] = 'ブック';
+
+$string['toc'] = '目次';
+$string['tocwidth'] = 'コンテンツのテーブル幅を選んでください。';
+$string['faq'] = 'ブック FAQ';
+
+$string['disableprinting'] = 'プリント不可';
+$string['customtitles'] = 'カスタムタイトル';
+
+$string['editingchapter'] = '章を編集';
+$string['chaptertitle'] = '章の題名';
+$string['content'] = '内容';
+$string['subchapter'] = '節';
+
+$string['numbering'] = '章番号の番号付け';
+$string['numbering0'] = '無し';
+$string['numbering1'] = '番号';
+$string['numbering2'] = '点';
+$string['numbering3'] = 'インデント';
+
+$string['chapterscount'] = '章';
+
+$string['addafter'] = '章の追加';
+$string['confchapterdelete'] = 'ほんとうにこの章を削除しますか?';
+$string['confchapterdeleteall'] = 'ほんとうにこの章とその下にある節を削除しますか?';
+
+$string['printbook'] = 'ブックを丸ごと印刷する';
+$string['printchapter'] = 'この章だけを印刷する';
+$string['printdate'] = '日付';
+$string['printedby'] = '印刷者';
+$string['top'] = 'トップ';
+
+$string['navprev'] = '前';
+$string['navnext'] = '次';
+
+$string['importingchapters'] = '章をブックにインポートする';
+$string['import'] = 'インポート';
+$string['doimport'] = 'インポートする';
+$string['importing'] = 'インポート中';
+$string['relinking'] = 'リンクの再作成中';
+$string['importinfo'] = '選択したHTMLもしくはディレクトリのインポート<br />各章はファイル名順にソートされます。';
+$string['maindirectory'] = 'メインディレクトリ';
+$string['fileordir'] = 'ファイルもしくはディレクトリ';
+
+?>
diff --git a/lang/ja_utf8/help/book/customtitles.html b/lang/ja_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..92203bd
--- /dev/null
@@ -0,0 +1,3 @@
+<p align=center><b>カスタムタイトル</b></p>
+
+<p>章の題名はTOCの中だけで自動的に表示されます。</p>
diff --git a/lang/ja_utf8/help/book/disableprinting.html b/lang/ja_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..99f9b80
--- /dev/null
@@ -0,0 +1,3 @@
+<p align=center><b>印刷不可</b></p>
+
+<p>印刷アイコンを隠します。</p>
diff --git a/lang/ja_utf8/help/book/edit.html b/lang/ja_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..4be77c2
--- /dev/null
@@ -0,0 +1,7 @@
+<p align=center><b>章の編集</b></p>
+
+<p>章の題名はなるべく短くしてください</p>
+
+<p>各章の下にある節は2レベルまで作成できます</p>
+
+<p>WYSIWYG htmlエディターを利用していて何か問題があった際には、(Mozilla Firefoxのような)別のブラウザで試してみて、あなたのプロファイルで、そのエディターを使用するのを取りやめる設定にしてください。</p>
\ No newline at end of file
diff --git a/lang/ja_utf8/help/book/faq.html b/lang/ja_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..662afca
--- /dev/null
@@ -0,0 +1,22 @@
+<p align=center><b>ブックに関してよく聞かれる質問</b></p>
+
+<dl>
+  <dt><b>なぜ2レベルしか階層がないのですか?</b></dt>
+  <dd>ほとんどの場合、2レベルで十分だからです。3レベルになると、構造的にあまりよくない文書になってしまいます。 ブックモジュールは、複数の短い教材の作成のためにデザインされたものです。通常、長い文書にはPDFのほうが向いております。PDFを作成する簡単な方法は仮想プリンタを利用することです。(次のリンクをご覧ください。 <a
+ href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"
+ target="_blank">PDFCreator</a>, <a
+ href="http://fineprint.com/products/pdffactory/index.html"
+ target="_blank">PDF
+Factory</a>, <a
+ href="http://www.adobe.com/products/acrobatstd/main.html"
+ target="_blank">Adobe Acrobat</a>,
+etc.).<br />
+  </dd><br />
+  <dt><b>生徒はブックを編集できるのですか?</b></dt>
+  <dd>教員だけがブックを作成、もしくは編集できます。いまのところ生徒が編集できるようにする機能を実装する予定はありませんが、どなたかが似たような機能をもったもの(ポートフォリオのようなものになるでしょうか)を作成するかもしれません。先生しか編集できない理由は、ブックをできるだけシンプルなものにしておくためです。</dd><br />
+  <dt><b>どうすればブックを検索できますか?</b></dt>
+  <dd>いまのところ、各ページに対してブラウザの検索機能を利用するしかありません。文書全体を検索するのはフォーラムだけしかできません。全てのリソースを横断的に検索できる検索ツールがあればいいですね。ボランティアはおられませんでしょうか?
+</dd><br />
+  <dt><b>題名が1行におさまらないのですが。</b></dt>
+  <dd>題名を変更するか、管理者に目次(TOC)の幅を変更してもらってください。目次(TOC)は、モジュールの設定によって、全てのブックに定義されています。</dd><br />
+</dl>
diff --git a/lang/ja_utf8/help/book/import.html b/lang/ja_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..12ca493
--- /dev/null
@@ -0,0 +1,5 @@
+<p align=center><b>インポート</b></p>
+
+<p> HTMLファイルもしくは複数のHTMLファイルを含んだディレクトリをインポートできます。</p>
+
+<p> 相対リンクは、チャプター間の絶対リンクに変換されます。イメージファイルやフラッシュもリンクが修正されます。</p>
diff --git a/lang/ja_utf8/help/book/index.html b/lang/ja_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..ab97206
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Book module</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">章番号</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">印刷不可</a>
+  <li><a href="help.php?module=book&file=customtitles.html">カスタムタイトル</a>
+  <li><a href="help.php?module=book&file=summary.html">概要を読む</a>
+  <li><a href="help.php?module=book&file=edit.html">章を編集</a>
+  <li><a href="help.php?module=book&file=import.html">インポート</a>
+  <li><a href="help.php?module=book&file=faq.html">ブックに関するFAQ</a>
+</ul>
+
diff --git a/lang/ja_utf8/help/book/mods.html b/lang/ja_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..6b99692
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign=absmiddle src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>ブック</b></p>
+<ul>
+<p>ブックとは、複数のページからなる教材です。</p>
+</ul>
diff --git a/lang/ja_utf8/help/book/numberingtype.html b/lang/ja_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..87309d9
--- /dev/null
@@ -0,0 +1,14 @@
+<p align=center><b>Numbering of Chapters</b></p>
+
+<p>There are several predefined numbering types:
+
+<p><b>None</b> - chapter and subchapter titles are not formatted at all, use
+if you want to define special numbering styles. For example letters: in chapter
+title type "A First Chapter", "A.1 Some Subchapter",...</p>
+
+<p><b>Numbers</b> - chapters and subchapters are numbered (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Bullets</b> - subchapters are indented and displayed with bullets.<p>
+
+<p><b>Indented</b> - subchapters are indented.</p>
diff --git a/lang/ja_utf8/help/book/summary.html b/lang/ja_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..148ba8d
--- /dev/null
@@ -0,0 +1,5 @@
+<p align=center><b>概要を読む</b></p>
+
+<p>概要とは、ブックの非常に短い説明です。</p>
+
+<p>ここにあまり多くの量を書きすぎないように!</p>
\ No newline at end of file
diff --git a/lang/nl_utf8/book.php b/lang/nl_utf8/book.php
new file mode 100644 (file)
index 0000000..481f4b9
--- /dev/null
@@ -0,0 +1,41 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:04 skodak Exp $ 
+      // book.php - created with Moodle 1.5 development (2004082300)
+
+
+$string['addafter'] = 'Voeg nieuw hoofdstuk toe';
+$string['chapterscount'] = 'Hoofdstukken';
+$string['chaptertitle'] = 'Hoofdstuk titel';
+$string['confchapterdelete'] = 'Wil je dit hoofdstuk echt verwijderen?';
+$string['confchapterdeleteall'] = 'Wil je dit hoofdstuk en alle paragrafen echt verwijderen?';
+$string['content'] = 'Inhoud';
+$string['customtitles'] = 'Titels alleen in inhoudstafel';
+$string['disableprinting'] = 'Schakel afdrukken uit';
+$string['doimport'] = 'Importeer';
+$string['editingchapter'] = 'Bewerk hoofdstuk';
+$string['faq'] = 'Boek FAQ';
+$string['fileordir'] = 'Bestand of map';
+$string['import'] = 'Importeer';
+$string['importinfo'] = 'Importeer het gekozen HTML-bestand of map.<br/>De hoofdstukken worden alfabetisch gerangschikt op bestandsnaam.';
+$string['importing'] = 'Importeren';
+$string['importingchapters'] = 'Importeren van hoofdstukken in het boek';
+$string['maindirectory'] = 'Hoofdmap';
+$string['modulename'] = 'Boek';
+$string['modulenameplural'] = 'Boeken';
+$string['navnext'] = 'Volgende';
+$string['navprev'] = 'Vorige';
+$string['numbering'] = 'Hoofdstuknummering';
+$string['numbering0'] = 'Geen';
+$string['numbering1'] = 'Nummering';
+$string['numbering2'] = 'Bolletjes';
+$string['numbering3'] = 'Inspringen';
+$string['printbook'] = 'Druk het hele boek af';
+$string['printchapter'] = 'Druk dit hoofdstuk af';
+$string['printdate'] = 'Datum';
+$string['printedby'] = 'Afgedrukt door';
+$string['relinking'] = 'Opnieuw linken';
+$string['subchapter'] = 'Paragraaf';
+$string['toc'] = 'Inhoudstafel';
+$string['tocwidth'] = 'Kies de breedte van de inhoudstafel voor alle boeken.';
+$string['top'] = 'boven';
+
+?>
diff --git a/lang/nl_utf8/help/book/customtitles.html b/lang/nl_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..1ddb5f3
--- /dev/null
@@ -0,0 +1 @@
+<p align=center><b>Titels alleen in inhoudstafel</b></p>\r\r\r\r<p>Indien ja worden de titels van de hoofdstukken automatisch alleen in de inhoudstafel getoond.</p>\r\r
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/disableprinting.html b/lang/nl_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..8308e4e
--- /dev/null
@@ -0,0 +1 @@
+<p align=center><b>Schakel afdrukken uit</b></p>\r\r\r\r<p>Verberg alle icoontjes om af te drukken.</p>\r\r
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/edit.html b/lang/nl_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..02c8097
--- /dev/null
@@ -0,0 +1,13 @@
+<p align=center><b>Hoofdstuk bewerken</b></p>
+
+
+
+<p>Probeer de titel van een hoofdstuk kort te houden.</p>
+
+
+
+<p>Paragrafen maximum twee niveaus diep.</p>
+
+
+
+<p>Als je problemen ondervindt met de WYSIWYG HTML-editor, probeer dan een andere browser (zoals Mozilla Firefox) of zet de editor af in je gebruikersprofiel.</p>
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/faq.html b/lang/nl_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..9ba3c34
--- /dev/null
@@ -0,0 +1,21 @@
+<p align=center><b>Frequently Asked Questions over boeken</b></p>
+
+<dl>
+  <dt><b>Waarom slechts twee niveaus diep?</b></dt>
+  <dd>Twee niveaus zijn genoeg voor de meeste boeken, drie niveaus zou tot slecht gestructureerde documenten leiden. De boekmodule is ontworpen voor kort, uit meerdere pagina's bestaand studiemateriaal. Het is beter PDF te gebruiken voor grotere documenten. De gemakkelijkste manier om PDF's te maken is met virtuele printers (zie <a
+ href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"
+ target="_blank">PDFCreator</a>, <a
+ href="http://fineprint.com/products/pdffactory/index.html"
+ target="_blank">PDF
+Factory</a>, <a
+ href="http://www.adobe.com/products/acrobatstd/main.html"
+ target="_blank">Adobe Acrobat</a>,
+enz.).<br />
+  </dd><br />
+  <dt><b>Kunnen leerlingen boeken bewerken?</b></dt>
+  <dd>Alleen leraren kunnen boeken maken en bewerken. Er zijn geen plannen voor het implementeren van bewerken voor leerlingen, maar misschien maakt iemand anders iets gelijkaardigs voor leerlingen (Portfolio?). De belangrijkste reden is om de boekmodule zo eenvoudig mogelijk te houden.</dd><br />
+  <dt><b>Hoe kan ik de boeken doorzoeken?</b></dt>
+  <dd>Op dit ogenblik is er maar één manier, namelijk de zoekfunctie van de browser op de afdrukpagina. Zoeken is op dit ogenblik enkel mogelijk in de Moodle forums.</dd><br />
+  <dt><b>Mijn titels passen niet op deze lijn.</b></dt>
+  <dd>Probeer je titel anders te verwoorden of vraag je sitebeheerder om de breedte van de inhoudstafel aan te passen. Deze wordt voor alle boeken gedefinieerd op de configuratiepagina van de module.</dd><br />
+</dl>
diff --git a/lang/nl_utf8/help/book/import.html b/lang/nl_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..b859c2a
--- /dev/null
@@ -0,0 +1 @@
+<p align=center><b>Importeren</b></p>\r\r\r\r<p> Je kunt een enkel HTML-bestand of alle HTML-bestanden van een map importeren.</p>\r\r\r\r<p> Relatieve links naar bestanden worden geconverteerd in absolute hoofdstuklinks. De links naar bestanden, flash en java worden ook herwerkt.</p>\r\r
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/index.html b/lang/nl_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..1afd2eb
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Boekmodule</p>
+<ul>
+  <li><a href="help.php?module=book&file=customtitles.html">Aangepaste titels</a>  
+  <li><a href="help.php?module=book&file=edit.html">Bewerken van hoofdstukken</a>
+  <li><a href="help.php?module=book&file=faq.html">Boek FAQ</a>
+  <li><a href="help.php?module=book&file=numberingtype.html">Hoofdstuknummering</a>
+  <li><a href="help.php?module=book&file=import.html">Importeren</a>
+  <li><a href="help.php?module=book&file=summary.html">Samenvatting</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Schakel afdrukken uit</a>
+</ul>
+
diff --git a/lang/nl_utf8/help/book/mods.html b/lang/nl_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..7ef7cc7
--- /dev/null
@@ -0,0 +1 @@
+<p><img valign=absmiddle src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Boeken</b></p>\r\r<ul>\r\r<p>Met de boekmodule maak je eenvoudig  studiemateriaal op meerdere pagina's.</p>\r\r</ul>\r\r
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/numberingtype.html b/lang/nl_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..114de5a
--- /dev/null
@@ -0,0 +1 @@
+<p align=center><b>Hoofdstuknummering</b></p>\r\r\r\r<p>Er zijn verschillende voorgedefinieerde nummeringstypes:\r\r\r\r<p><b>Geen</b> - hoofdstukken en ondertitels krijgen geen opmaak. Gebruik deze instelling als je speciale nummeringsstijlen, zoals letters, wil gebruiken. Bijvoorbeeld: "A Eerste hoofdstuk", "A.1 Eerste paragraaf", ....\r</p>\r\r\r\r<p><b>Getallen</b> - hoofdstukken en paragrafen worden genummerd(1, 1.1, 1.2, 2,\r\r...)<p>\r\r\r\r<p><b>Bolletjes</b> - paragrafen springen in en worden met bolletjes getoond.<p>\r\r\r\r<p><b>Indented</b> - paragrafen springen in.</p>\r\r
\ No newline at end of file
diff --git a/lang/nl_utf8/help/book/summary.html b/lang/nl_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..61de4eb
--- /dev/null
@@ -0,0 +1,9 @@
+<p align=center><b>Samenvatting</b></p>
+
+
+
+<p>De samenvatting is een heel korte beschrijving van het boek.</p>
+
+
+
+<p>Kom niet in de verleiding hier teveel te schrijven!</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/book.php b/lang/pl_utf8/book.php
new file mode 100644 (file)
index 0000000..9c05949
--- /dev/null
@@ -0,0 +1,42 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:04 skodak Exp $ 
+      // book.php - created with Moodle 1.5 UNSTABLE DEVELOPMENT (2005031000)
+
+
+$string['addafter'] = 'Dadaj nowy rozdział';
+$string['chapterscount'] = 'LIczba rozdziałów';
+$string['chaptertitle'] = 'Tytuł rozdziału';
+$string['confchapterdelete'] = 'Czy napewno chcesz usunąć ten rozdział';
+$string['confchapterdeleteall'] = 'Czy napewno chcesz usunąć ten rozdział i wszystkie jego podrozdziały?';
+$string['content'] = 'Zawartość';
+$string['customtitles'] = 'Tytuły użytkownika';
+$string['disableprinting'] = 'Wyłącz drukowanie';
+$string['doimport'] = 'Import';
+$string['editingchapter'] = 'Edycja rozdziału';
+$string['faq'] = 'FAQ Książki';
+$string['fileordir'] = 'Plik lub katalog';
+$string['import'] = 'import';
+$string['importinfo'] = 'Importuj wybrany plik HTML lub katalog. <br>Rozdziały są sortowane alfabetycznie wg. nazw plików.';
+$string['importing'] = 'Importowanie';
+$string['importingchapters'] = 'Importowanie rozdziałów do książki';
+$string['maindirectory'] = 'Główny katalog';
+$string['modulename'] = 'Książka';
+$string['modulenameplural'] = 'Książki';
+$string['navexit'] = 'Zamknij  książkę';
+$string['navnext'] = 'Następny';
+$string['navprev'] = 'Poprzedni';
+$string['numbering'] = 'Numerowanie rodziałów';
+$string['numbering0'] = 'żaden';
+$string['numbering1'] = 'Liczby';
+$string['numbering2'] = 'Wypunktowanie';
+$string['numbering3'] = 'Wcięte';
+$string['printbook'] = 'Drukuj kopletną książkę';
+$string['printchapter'] = 'Drukuj ten rozdział';
+$string['printdate'] = 'Data';
+$string['printedby'] = 'Wydrukowane przez użytkoniwka';
+$string['relinking'] = 'Ponowne tworzenie linków';
+$string['subchapter'] = 'Podrozdział';
+$string['toc'] = 'Spis treści';
+$string['tocwidth'] = 'Ustaw szrokość spisu treści dla wszystkich książek';
+$string['top'] = 'Góra';
+
+?>
diff --git a/lang/pl_utf8/help/book/customtitles.html b/lang/pl_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..1f74224
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Tytuły użytkownika</b></p>
+
+<p>Tytuły rozdziałów są automatycznie wyświetlane tylko w Spisie Treści.</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/disableprinting.html b/lang/pl_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..5254fff
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Wyłącz drukowanie</b></p>
+
+<p>Ukryj ikonki wydruku.</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/edit.html b/lang/pl_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..ef2cd53
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Edycja rozdziału</b></p>
+
+<p>Staraj się używać krótkich tytułów rozdziałów</p>
+
+<p>Maksymalna liczba poziomów podrozdziałów to dwa.</p>
+
+<p>Jeśli zauważysz problemy używając edytora html WYSIWYG, spróbuj przejść na inną przeglądarkę (taką jak Mozilla Firefox) lub całkowicie wyłącz edytor w swoim profilu.</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/faq.html b/lang/pl_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..a57dcc6
--- /dev/null
@@ -0,0 +1,47 @@
+<p align="center">
+  <b>Często Zadawane Pytania dotyczace książek</b>
+</p>
+<dl>
+  <dt>
+    <b>Dlaczego tylko dwa poziomy?</b>
+  </dt>
+  <dd>
+    Dwa poziomy są zasadniczno wystarczające dla wszystkich książęk, trzy i więcej mogłyby prowadzić do źle ustruturyzowanych dokumentów. Moduł książka jest zaprojektowany do tworzenia krótkich, kilkustronicowych materiałów. Dla długich dokumentów lepiej użyć formtu PDF. Najprostszy sposób tworzenia plików PDF to wykorzystanie wirtualnych drukarek (zobacz
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    itp.).
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Czy studenci mogą edytowac książki?</b>
+  </dt>
+  <dd>
+    Tylko nauczyciele mogą tworzyć i edytować książki. Nie ma planów implementacji takiej
+    funkcjonalności, ale ktoś może stworzyć coś podobnego dla studnetów (Portfolio?).
+    Główny powód to utrzymanie modułu tak prostym jak to tylko możliwe.  
+  <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Jak mogę przeszukiwać książki?</b>
+  </dt>
+  <dd>
+   Obecnie jest tylko jeden sposób, użyj funkcji przeglądarki w widoku wydruku. Globalne
+   przeszukiwanie jest możliwe tylko w forach Moodla.
+   Byłoby dobrze posiadać globalne wyszukiwanie we wszystkich zasobach włączając książki, są
+   chętni?
+  <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Moje tytuły nie mieszczą się.</b>
+  </dt>
+  <dd>
+    Przeformułuj swoje tytuły lub poproś admina, żeby zmienił szerokość spisu treści. Jest ona 
+    definiowalna globalnie dla wszystkich książek na stronie konfiguracji Moodla. 
+  </dd>
+  <br />
+</dl>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/import.html b/lang/pl_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..ed09f9a
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Import</b></p>
+
+<p>Możesz zaimportować plik HTML lub wszystkie pliki HTML z katalogu.</p>
+
+<p>Względne linki do plików są przekształcane w bezwzględne linki do rozdziałów. Obrazy, Fleshe i Java są również ponownie linkowane.</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/index.html b/lang/pl_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..65e7158
--- /dev/null
@@ -0,0 +1,10 @@
+<p>ModuŁ Książka</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Numerownie Rozdziałów</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Wyłącz Drukowanie</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Tytuły Użytkownika</a>
+  <li><a href="help.php?module=book&file=summary.html">Streszczenie</a>
+  <li><a href="help.php?module=book&file=edit.html">Edycja Rozdziału</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">FAQ Książki</a>
+</ul>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/mods.html b/lang/pl_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..c49b244
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="http://gopher.wsb.poznan.pl/moodle-cvs/moodle/mod/book/icon.gif"> <b>Książki</b></p>
+<ul>
+<p>Książka jest prostym kilkustronicowym materiałem do studiowania.</p>
+</ul>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/numberingtype.html b/lang/pl_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..cae0cf1
--- /dev/null
@@ -0,0 +1,15 @@
+<p align="center"><b>Numerownie rodziałów</b></p>
+
+<p>Jest kilka predefiniowanych typów numerowania:
+
+<p><b>żaden</b> - tytuły rodziałów i podrozdziałów nie są w żaden sposób formatwane, użyj go jeśli chcesz zdefiniować specjalny styl numerowania. 
+<br>Na przykład litery: w tytule rozdziału  typu 
+<br>"A Pierwszy rozdział", 
+<br>"A.1 Jakiś podrozdział",...</p>
+
+<p><b>Liczby</b> - rozdziały i podrozdziały są numerowane (1, 1.1, 1.2, 2,
+...)<p>
+
+<p><b>Wypunktowanie</b> - podrozdziały sa wcięte i wyświetlane ze znakami wypunktowania.<p>
+
+<p><b>Wcięty</b> - podrozdziały są wcięte.</p>
\ No newline at end of file
diff --git a/lang/pl_utf8/help/book/summary.html b/lang/pl_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..0227b53
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Streszczenie</b></p>
+
+<p>Streszczenie jest bardzo krótkim opisem książki.</p>
+
+<p>Niech cię nie kusi pisać tu zbyt dużo!</p>
\ No newline at end of file
diff --git a/lang/pt_br_utf8/book.php b/lang/pt_br_utf8/book.php
new file mode 100644 (file)
index 0000000..d097dbf
--- /dev/null
@@ -0,0 +1,48 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:02 skodak Exp $
+
+$string['modulename'] = 'Livro';
+$string['modulenameplural'] = 'Livros';
+
+$string['toc'] = 'Sumário';
+$string['tocwidth'] = 'Selecione a largura do Sumário para todos os livros.';
+$string['faq'] = 'Perguntas sobre Livro';
+
+$string['disableprinting'] = 'Desabilitar Impressão';
+$string['customtitles'] = 'Títulos Personalizados';
+
+$string['editingchapter'] = 'Edição de capítulo';
+$string['chaptertitle'] = 'Título de capítulo';
+$string['content'] = 'Conteúdo';
+$string['subchapter'] = 'Sub-capítulo';
+
+$string['numbering'] = 'Numeração de capítulo';
+$string['numbering0'] = 'Nada';
+$string['numbering1'] = 'Números';
+$string['numbering2'] = 'Bolinhas';
+$string['numbering3'] = 'Indentado';
+
+$string['chapterscount'] = 'Capítulos';
+
+$string['addafter'] = 'Adicionar novo capítulo';
+$string['confchapterdelete'] = 'Você quer mesmo apagar este capítulo?';
+$string['confchapterdeleteall'] = 'Você quer mesmo apagar este capítulo e todos seus sub-capítulos?';
+
+$string['printbook'] = 'Imprimir o livro todo';
+$string['printchapter'] = 'Imprimir este capítulo';
+$string['printdate'] = 'Data';
+$string['printedby'] = 'Impresso por';
+$string['top'] = 'topo';
+
+$string['navprev'] = 'Anterior';
+$string['navnext'] = 'Próximo';
+
+$string['importingchapters'] = 'Importando capítulos para o livro';
+$string['import'] = 'Importar';
+$string['doimport'] = 'Importe';
+$string['importing'] = 'Importando';
+$string['relinking'] = 'Re-linkando';
+$string['importinfo'] = 'Importar o arquivo HTML ou diretório selecionados.<br />Os capítulos são ordenados alfabeticamente usando os nomes dos arquivos.';
+$string['maindirectory'] = 'Diretório principal';
+$string['fileordir'] = 'Arquivo ou diretório';
+
+?>
diff --git a/lang/pt_br_utf8/help/book/customtitles.html b/lang/pt_br_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..01988d7
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Títulos personalizados</b></p>
+
+<p>Os títulos dos capítulos são mostrados automaticamente só no sumário.</p>
diff --git a/lang/pt_br_utf8/help/book/disableprinting.html b/lang/pt_br_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..6e93432
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Desabilitar Impressão</b></p>
+
+<p>Esconde o ícode de impressão.</p>
diff --git a/lang/pt_br_utf8/help/book/edit.html b/lang/pt_br_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..0ec3298
--- /dev/null
@@ -0,0 +1,7 @@
+<p align="center"><b>Edução de capítulo</b></p>
+
+<p>Tente manter o título do capítulo breve.</p>
+
+<p>O nível máximo de sub-capítulos é dois.</p>
+
+<p>Se encontrar problemas com o editor HTML interno, tente mudar para outro navegador (como, por exemplo, Mozilla Firefox) ou desabilite de vez o editor em suas preferências.</p>
diff --git a/lang/pt_br_utf8/help/book/faq.html b/lang/pt_br_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..0a8250d
--- /dev/null
@@ -0,0 +1,52 @@
+<p align="center">
+  <b>Perguntas sobre "Livro"</b>
+</p>
+<dl>
+  <dt>
+    <b>Porque só dois níveis?</b>
+  </dt>
+  <dd>
+    Dois níveis são em geral suficiente para todos os livros. Três níveis
+    levariam a documentos pobremente estruturados. O módulo Livro foi
+    desenhado para a criação de materiais de estudo com várias páginas
+    curtos. Normalmente seria melhor usar o formato PDF para documentos
+    maiores. A forma mais fácil de criar PDFs é usar as impressoras virtuais
+    (veja
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+    etc.).
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Os alunos podem editar livros?</b>
+  </dt>
+  <dd>
+    Só professores podem criar e editar livros. Não há previsão de implementar
+    edição de livros por estudantes, mas alguém poderia criar algo similar
+    para estudantes (portfólios?). O principal motivo é para manter o módulo
+    Livro tão simples quanto possível.
+  </dd>
+  <br />
+  <dt>
+    <b>Como faço uma busca nos livros?</b>
+  </dt>
+  <dd>
+    Atualmente só há uma forma, use o mecanismo de busca de seu navegador
+    na página que é mostrada. A busca global só é possível atualmente nos
+    fóruns do Moodle. Seria ótimo ter uma busca global em todos os recursos,
+    incluindo os livros. Algum voluntário?
+  </dd>
+  <br />
+  <dt>
+    <b>Meus títulos não cabem numa linha.</b>
+  </dt>
+  <dd>
+    Veja uma alternativa menor para seus títulos, ou peça para o administrador
+    do sistema mudar a largura máxima do sumário. Ela é definida globalmente
+    para todos os livros no módulo de configuração.
+  </dd>
+  <br />
+</dl>
diff --git a/lang/pt_br_utf8/help/book/import.html b/lang/pt_br_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..5f95e93
--- /dev/null
@@ -0,0 +1,6 @@
+<p align="center"><b>Importação</b></p>
+
+<p>Você pode importar um arquivo HTML ou todos os arquivos HTML num diretório.</p>
+
+<p>As referências relativas (links) são convertidos para referências absolutas de capítulos. Imagens, flash e Java também são
+   re-referenciados.</p>
diff --git a/lang/pt_br_utf8/help/book/index.html b/lang/pt_br_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..6ca4cd2
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Módulo Livro</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Numeração de capítulos</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Desabilitar Impressão</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Títulos personalizados</a>
+  <li><a href="help.php?module=book&file=summary.html">Sumário de leitura</a>
+  <li><a href="help.php?module=book&file=edit.html">Edição de capítulo</a>
+  <li><a href="help.php?module=book&file=import.html">Importação</a>
+  <li><a href="help.php?module=book&file=faq.html">Perguntas sobre Livro</a>
+</ul>
+
diff --git a/lang/pt_br_utf8/help/book/mods.html b/lang/pt_br_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..c256fc8
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Livros</b></p>
+<ul>
+<p>Livro é simplesmente um material de estudo com várias páginas</p>
+</ul>
diff --git a/lang/pt_br_utf8/help/book/numberingtype.html b/lang/pt_br_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..a12ceac
--- /dev/null
@@ -0,0 +1,15 @@
+<p align="center"><b>Numeração de capítulos</b></p>
+
+<p>Há várias maneiras pré-definidas de numerar capítulos:</p>
+
+<p><b>Nada</b> - títulos de capítulos e sub-capítulos não são formatados. Use
+se quiser definir um estilo especial de numeração. Por exemplo, letras: no
+título do capítulo escreva "A Primeiro capítulo", "A.1 Algum sub-capítulo",...
+</p>
+
+<p><b>Números</b> - capítulos e sub-capítulos são numerados (1, 1.1, 1.2, 2,
+...)</p>
+
+<p><b>Bolinhas</b> - sub-capítulos são indentados, tendo uma bolinha na frente.</p>
+
+<p><b>Indentado</b> - sub-capítulos são indentados.</p>
diff --git a/lang/pt_br_utf8/help/book/summary.html b/lang/pt_br_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..a193ed5
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Sumário de Leitura</b></p>
+
+<p>Este sumário é uma descrição muito breve do livro.</p>
+
+<p>Não caia na tentação de escrever demasiado aqui!</p>
diff --git a/lang/sk_utf8/book.php b/lang/sk_utf8/book.php
new file mode 100644 (file)
index 0000000..9e23f49
--- /dev/null
@@ -0,0 +1,42 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:00 skodak Exp $ 
+      // book.php - created with Moodle 1.3.3 + (2004052503)
+
+
+$string['addafter'] = 'Pridať novú kapitolu';
+$string['chapterscount'] = 'Počet kapitol';
+$string['chaptertitle'] = 'Nadpis';
+$string['confchapterdelete'] = 'Naozaj chcete odstrániť túto kapitolu?';
+$string['confchapterdeleteall'] = 'Naozaj chcete odstrániť túto kapitolu včítane podkapitol?';
+$string['content'] = 'Text';
+$string['customtitles'] = 'Užívateľské nadpisy';
+$string['disableprinting'] = 'Zakázať tlač';
+$string['doimport'] = 'Importovať';
+$string['editingchapter'] = 'Úprava kapitoly';
+$string['faq'] = 'Časté otázky';
+$string['fileordir'] = 'Súbor alebo adresár';
+$string['import'] = 'Import';
+$string['importinfo'] = 'Importovat HTML súbor alebo všetky súbory v zadanej zložke.<br />Kapitoly budú striedené abecedne podľa názvov súborov.';
+$string['importing'] = 'Importujej';
+$string['importingchapters'] = 'Importovanie kapitol';
+$string['maindirectory'] = 'Hlavná zložka';
+$string['modulename'] = 'Kniha';
+$string['modulenameplural'] = 'Knihy';
+$string['navnext'] = 'Následujúci';
+$string['navprev'] = 'Predchádzajúci';
+$string['navexit'] = 'Späť na prehľad';
+$string['numbering'] = 'Číslovanie kapitol';
+$string['numbering0'] = 'Žiadne';
+$string['numbering1'] = 'Čísla';
+$string['numbering2'] = 'Odrážky';
+$string['numbering3'] = 'Odsadené';
+$string['printbook'] = 'Vytlačiť celú knihu';
+$string['printchapter'] = 'Vytlačiť jednu kapitolu';
+$string['printdate'] = 'Dátum';
+$string['printedby'] = 'Vytlačil(a)';
+$string['relinking'] = 'Relinkujem';
+$string['subchapter'] = 'Podkapitola';
+$string['toc'] = 'Obsah';
+$string['tocwidth'] = 'Vyberte šírku obsahu pre všetky knihy.';
+$string['top'] = 'začiatok';
+
+?>
diff --git a/lang/sk_utf8/help/book/customtitles.html b/lang/sk_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..6fb24c4
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Užívateľské nadpisy</b></p>
+
+<p>Nadpisy sú zobrazené iba v obsahu knihy.</p>
diff --git a/lang/sk_utf8/help/book/disableprinting.html b/lang/sk_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..efe6214
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Zakázať tlač</b></p>
+
+<p>Skryť ikony pre tlač.</p>
diff --git a/lang/sk_utf8/help/book/edit.html b/lang/sk_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..3305aea
--- /dev/null
@@ -0,0 +1,8 @@
+<p align="center"><b>Úprava kapitol</b></p>
+
+<p>Snažte sa písať iba krátke kapitoly.</p>
+
+<p>Knika môže mať iba dve úrovne nadpisov.</p>
+
+<p>ak máte problémy s HTML editorom, môžete si skúsiť nainštalovať iný prohliadač
+(napríklad Mozilla Firefox).</p>
\ No newline at end of file
diff --git a/lang/sk_utf8/help/book/faq.html b/lang/sk_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..e1a9dda
--- /dev/null
@@ -0,0 +1,41 @@
+<p align="center">
+  <b>Často kladené otázky</b>
+</p>
+<dl>
+  <dt>
+    <b>Prečo iba dve úrovne?</b>
+  </dt>
+  <dd>
+    Dve úrovne nadpisu stačia, vždy se snažte písať krátko a zrozumiteľne.
+    Ak si myslíte, že potrebujete viac úrovní, rozdeľte text do niekoľkých kníh.
+    Pre dlhšie texty je väčšinou vhodnejší PDF formát. PDF súbory môžete
+    vytvoriť pomocou nasledujúcich programov:
+    <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+    <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+      PDFFactory</a>,
+    <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>.
+    <br />
+  </dd>
+  <br />
+  <dt>
+    <b>Môžu študenti upravovať knihy?</b>
+  </dt>
+  <dd>
+    Knihy môžu vytvárať a upravovať iba učitelia.
+  </dd>
+  <br />
+  <dt>
+    <b>Môžem vyhľadávať v knihách?</b>
+  </dt>
+  <dd>
+    Použite vyhľadávanie vo vašom prehliadači.
+  </dd>
+  <br />
+  <dt>
+    <b>Nadpisy sa mi nevojdu na jeden riadok.</b>
+  </dt>
+  <dd>
+    Alebo skráťte nadpis, alebo požiadajte vášho správce, aby zmenil šírku obsahu.
+  </dd>
+  <br />
+</dl>
diff --git a/lang/sk_utf8/help/book/import.html b/lang/sk_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..7440b30
--- /dev/null
@@ -0,0 +1,6 @@
+<p align="center"><b>Import</b></p>
+
+<p>Môžete importovať jeden HTML súbor alebo všetky súbory v zložke.</p>
+
+<p>Relatívne odkazy sú prevedené na odkazy na kapitoly. Odkazy na
+obrázky, flash a Javu sú tiež upravené.</p>
diff --git a/lang/sk_utf8/help/book/index.html b/lang/sk_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..fa79f5a
--- /dev/null
@@ -0,0 +1,11 @@
+<p>Modul Kniha</p>
+<ul>
+  <li><a href="help.php?module=book&file=numberingtype.html">Číslovanie kapitol</a>
+  <li><a href="help.php?module=book&file=disableprinting.html">Zakázať tlač</a>
+  <li><a href="help.php?module=book&file=customtitles.html">Užívateľské nadpisy</a>
+  <li><a href="help.php?module=book&file=summary.html">Súhrn</a>
+  <li><a href="help.php?module=book&file=edit.html">Úprava kapitol</a>
+  <li><a href="help.php?module=book&file=import.html">Import</a>
+  <li><a href="help.php?module=book&file=faq.html">Časté otázky</a>
+</ul>
+
diff --git a/lang/sk_utf8/help/book/mods.html b/lang/sk_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..5a1c46e
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img valign="absmiddle" src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif">&nbsp;<b>Knihy</b></p>
+<ul>
+<p>Kniha je jednoduchý viacstránkový študijný materiál.</p>
+</ul>
diff --git a/lang/sk_utf8/help/book/numberingtype.html b/lang/sk_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..5639f4a
--- /dev/null
@@ -0,0 +1,14 @@
+<p align="center"><b>Číslovanie kapitol</b></p>
+
+<p>Existuje niekoľko preddefinovaných typov číslovania:
+
+<p><b>Žiadne</b> - kapitoly a podkapitoly nie sú formátované, používajte v prípade,
+ak chcete zadať vaše vlastné číslovánie. Napríklad: do poľa nadpis kapitoly zadajte
+"A Úvod", "A.1 Nejaké Rozprávanie", ...</p>
+
+<p><b>Čísla</b> - kapitoly a podkapitoly sú číslované (1, 1.1, 1.2, 2, ...)<p>
+
+<p><b>Odrážky</b> - podkapitoly sú odsadené a zvýraznené odrážkami.<p>
+
+<p><b>Odsadené</b> - podkapitoly sú odsadené.</p>
+
diff --git a/lang/sk_utf8/help/book/summary.html b/lang/sk_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..2f06547
--- /dev/null
@@ -0,0 +1,5 @@
+<p align="center"><b>Súhrn</b></p>
+
+<p>Stručný obsah knihy.</p>
+
+<p>Snažte sa o skutočne krátky a výstižný opis.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/book.php b/lang/sv_utf8/book.php
new file mode 100644 (file)
index 0000000..0acd53f
--- /dev/null
@@ -0,0 +1,42 @@
+<?PHP // $Id: book.php,v 1.1 2006/03/12 18:40:04 skodak Exp $ 
+      // book.php - created with Moodle 1.4 (2004083100)
+
+
+$string['addafter'] = 'Lägg till ett nytt kapitel';
+$string['chapterscount'] = 'Kapitel';
+$string['chaptertitle'] = 'Titel på kapitel';
+$string['confchapterdelete'] = 'Är Du säker på att vill ta bort det här kapitlet?';
+$string['confchapterdeleteall'] = 'Är Du säker på att vill ta bort det här kapitlet och alla underavdelningar?';
+$string['content'] = 'Innehåll';
+$string['customtitles'] = 'Standardtitlar';
+$string['disableprinting'] = 'Avaktivera utskrift';
+$string['doimport'] = 'Importera';
+$string['editingchapter'] = 'Redigerar kapitel';
+$string['faq'] = 'FAQ för Bok';
+$string['fileordir'] = 'File eller katalog';
+$string['import'] = 'Import';
+$string['importinfo'] = 'Importera den markerade HTML-filen eller katalogen.<br />Kapitel sorteras alfabetiskt utifrån filnamn.';
+$string['importing'] = 'Importerar';
+$string['importingchapters'] = 'Importerar kapitel till bok';
+$string['maindirectory'] = 'Huvudkatalog';
+$string['modulename'] = 'Bok';
+$string['modulenameplural'] = 'Böcker';
+$string['navexit'] = 'Exit Book';
+$string['navnext'] = 'Nästa';
+$string['navprev'] = 'Föregående';
+$string['numbering'] = 'Numrering av kapitel';
+$string['numbering0'] = 'Ingen';
+$string['numbering1'] = 'Tal';
+$string['numbering2'] = 'Bullets';
+$string['numbering3'] = 'Indragen';
+$string['printbook'] = 'Skriv ut hela boken';
+$string['printchapter'] = 'Skriv ut det här kapitlet';
+$string['printdate'] = 'Datum';
+$string['printedby'] = 'Utskrivet av';
+$string['relinking'] = 'Länkar tillbaka';
+$string['subchapter'] = 'Underavdelning';
+$string['toc'] = 'Innehållsförteckning';
+$string['tocwidth'] = 'Välj en bredd på innehållsförteckningen som gäller alla böcker.';
+$string['top'] = 'Upp';
+
+?>
diff --git a/lang/sv_utf8/help/book/customtitles.html b/lang/sv_utf8/help/book/customtitles.html
new file mode 100644 (file)
index 0000000..9ebe5df
--- /dev/null
@@ -0,0 +1,2 @@
+<p align="center"><b>Standardiserade titlar</b></p>
+<p>Titlar p&aring; kapitel visas automatiskt bara i inneh&aring;llsf&ouml;rteckningen.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/disableprinting.html b/lang/sv_utf8/help/book/disableprinting.html
new file mode 100644 (file)
index 0000000..d44f22e
--- /dev/null
@@ -0,0 +1,2 @@
+<p align="center"><b>Avaktivera utskrift</b></p>
+<p>D&ouml;lj ikonen f&ouml;r utskrift.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/edit.html b/lang/sv_utf8/help/book/edit.html
new file mode 100644 (file)
index 0000000..2b626ac
--- /dev/null
@@ -0,0 +1,6 @@
+<p align="center"><b>Att redigera ett kapitel</b></p>
+<p>F&ouml;rs&ouml;k att anv&auml;nda korta titlar p&aring; kapitel.</p>
+<p>Den maximala niv&aring;n p&aring; underkapitel &auml;r tv&aring;.</p>
+<p>Om Du st&ouml;ter p&aring; problem n&auml;r Du anv&auml;nder WYSIWYG HTML-redigeraren, 
+s&aring; kan Du f&ouml;rs&ouml;ka att byta till en annan webbl&auml;sare
+(som Mozilla Firefox) eller st&auml;nga av redigeraren helt och h&aring;llet i Din profil.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/faq.html b/lang/sv_utf8/help/book/faq.html
new file mode 100644 (file)
index 0000000..fe7fc6c
--- /dev/null
@@ -0,0 +1,42 @@
+<p align="center"><b>Vanligt f&ouml;rekommande fr&aring;gor om Modulen bok</b></p>
+<dl>
+  <dt>
+    <b>Varf&ouml;r bara tv&aring; niv&aring;er?</b>
+  </dt>
+         <dd>
+           Tv&aring; niv&aring;er r&auml;cker vanligtvis f&ouml;r alla b&ouml;cker, tre niv&aring;er skulle leda till
+           illa strukturerade dokument.  Modulen bok &auml;r utformad f&ouml;r att skapa korta 
+               studiematerial som best&aring;r av ett antal sidor. F&ouml;r l&auml;ngre dokument &auml;r det normalt
+               sett b&auml;ttre med Pdf-format. Det enklaste s&auml;ttet att skapa Pdf-filer &auml;r 
+               virtuella skrivare (se
+           <a  href="http://sector7g.wurzel6.de/pdfcreator/index_en.htm"  target="_blank">PDFCreator</a>,
+           <a  href="http://fineprint.com/products/pdffactory/index.html"  target="_blank">
+             PDFFactory</a>,
+           <a  href="http://www.adobe.com/products/acrobatstd/main.html"  target="_blank">Adobe Acrobat</a>,
+           etc.).
+           <br /> <br />
+         </dd>
+       <dt>    <b>Kan studenter/elever/deltagare/l&auml;rande redigera b&ouml;cker?</b></dt>
+         <dd>Endast l&auml;rare kan skapa och redigera b&ouml;cker.
+         Det finns inga planer p&aring; att utvidga detta, men n&aring;gon kan kanske
+         skapa n&aring;gonting liknande f&ouml;r studenter/elever/deltagare/l&auml;rande
+        (Portfolio?). Den viktigaste orsaken &auml;r att den h&auml;r modulen ska vara s&aring; enkel som m&ouml;jligt.<br /><br />
+         </dd>
+       <dt>
+       <b>Hur s&ouml;ker jag i b&ouml;ckerna?</b>
+       </dt>
+         <dd>
+         F.n. finns det bara ett s&auml;tt, n&auml;mligen att anv&auml;nda webbl&auml;sarens
+         s&ouml;kfunktion i "Skriv ut". Global s&ouml;kning g&aring;r bara att g&ouml;ra i Moodles forum.
+         Det vore trevligt med global s&ouml;kning f&ouml;r alla resurser inklusive b&ouml;cker,
+         n&aring;gra frivilliga?<br /><br />
+      </dd>
+    <dt>
+    <b>Min titlar passar inte in p&aring; raden.</b>
+    </dt>
+         <dd>
+         Formulera antingen om dina titlar eller be din systemadministrat&ouml;r 
+         att &ouml;ka vidden p&aring; inneh&aring;llsf&ouml;rteckningen. Den &auml;r globalt definierad
+         p&aring; sidan f&ouml;r konfiguration av modulen.
+         </dd>
+ </dl>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/import.html b/lang/sv_utf8/help/book/import.html
new file mode 100644 (file)
index 0000000..afb7501
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Att importera</b></p>
+<p>Du kan importera en enskild HTML-fil eller varje HTML-fil i en katalog.</p>
+<p>Relativa l&auml;nkar konverteras till absoluta l&auml;nkar f&ouml;r kapitel. Bilder, Flash och Java l&auml;nkas ocks&aring; om.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/index.html b/lang/sv_utf8/help/book/index.html
new file mode 100644 (file)
index 0000000..5b411bf
--- /dev/null
@@ -0,0 +1,11 @@
+<p><b>Modulen bok</b> (utvecklingsmodul)</p>
+<ul>
+  <li><a href="help.php?module=book&amp;file=mods.html">Modulen bok</a></li>
+  <li><a href="help.php?module=book&amp;file=numberingtype.html">Att numrera kapitel</a></li>
+  <li><a href="help.php?module=book&amp;file=disableprinting.html">Avaktivera utskrift</a></li>
+  <li><a href="help.php?module=book&amp;file=customtitles.html">Standardiserade titlar</a></li>
+  <li><a href="help.php?module=book&amp;file=summary.html">Sammanfattning av l&auml;sningen</a></li>
+  <li><a href="help.php?module=book&amp;file=edit.html">Att redigera ett kapitel</a></li>
+  <li><a href="help.php?module=book&amp;file=import.html">Att importera</a></li>
+  <li><a href="help.php?module=book&amp;file=faq.html">Vanligt f&ouml;rekommande fr&aring;gor om Modulen bok</a></li>
+</ul>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/mods.html b/lang/sv_utf8/help/book/mods.html
new file mode 100644 (file)
index 0000000..d3246f5
--- /dev/null
@@ -0,0 +1,4 @@
+<p><img src="<?php echo $CFG->wwwroot?>/mod/book/icon.gif" alt="" />&nbsp;<b>B&ouml;cker</b></p>
+<ul>
+<li>Bok &auml;r ett enkelt studiematerial best&aring;ende av ett antal sidor</li>
+</ul>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/numberingtype.html b/lang/sv_utf8/help/book/numberingtype.html
new file mode 100644 (file)
index 0000000..5b4c5ff
--- /dev/null
@@ -0,0 +1,9 @@
+<p align="center"><b>Att numrera kapitel</b></p>
+<p>Det finns ett antal f&ouml;rdefinierade s&auml;tt att numrera:</p>
+<p><b>Inget</b> - kapitel och undertitlar formatteras inte alls, anv&auml;nd det om Du vill
+definiera Dina egna s&auml;tt att numrera. T.ex. bokst&auml;ver: I titlar p&aring; kapitel av typen
+"F&ouml;rsta kapitlet", "A.1 n&aring;gra underavdelningar",...</p>
+<p><b>Siffror</b> - kapitel och undertitlar numreras (1, 1.1, 1.2, 2,
+...)</p>
+<p><b>Punkter</b> - undertitlar har indrag och visas med punkter.</p>
+<p><b>Indrag</b> - undertitlar har indrag.</p>
\ No newline at end of file
diff --git a/lang/sv_utf8/help/book/summary.html b/lang/sv_utf8/help/book/summary.html
new file mode 100644 (file)
index 0000000..ea4eec1
--- /dev/null
@@ -0,0 +1,3 @@
+<p align="center"><b>Sammanfattning av l&auml;sningen</b></p>
+<p>Sammanfattningen &auml;r en mycket kort beskrivning av boken.</p>
+<p>L&aring;t Dig inte frestas att skriva f&ouml;r mycket h&auml;r!</p>
\ No newline at end of file
diff --git a/lib.php b/lib.php
new file mode 100644 (file)
index 0000000..fc8f8a3
--- /dev/null
+++ b/lib.php
@@ -0,0 +1,419 @@
+<?PHP // $Id: lib.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+define('NUM_NONE',     '0');
+define('NUM_NUMBERS',  '1');
+define('NUM_BULLETS',  '2');
+define('NUM_INDENTED', '3');
+
+$NUMBERING_TYPE = array (NUM_NONE       => get_string('numbering0', 'book'),
+                         NUM_NUMBERS    => get_string('numbering1', 'book'),
+                         NUM_BULLETS    => get_string('numbering2', 'book'),
+                         NUM_INDENTED   => get_string('numbering3', 'book') );
+
+if (!isset($CFG->book_tocwidth)) {
+    set_config("book_tocwidth", 180);  // default toc width
+}
+
+
+/// Library of functions and constants for module 'book'
+
+function book_add_instance($book) {
+/// Given an object containing all the necessary data,
+/// (defined by the form in mod.html) this function
+/// will create a new instance and return the id number
+/// of the new instance.
+
+    $book->timecreated = time();
+    $book->timemodified = $book->timecreated;
+
+    return insert_record('book', $book);
+}
+
+
+function book_update_instance($book) {
+/// Given an object containing all the necessary data,
+/// (defined by the form in mod.html) this function
+/// will update an existing instance with new data.
+
+    $book->timemodified = time();
+    $book->id = $book->instance;
+
+    # May have to add extra stuff in here #
+
+    return update_record('book', $book);
+}
+
+
+function book_delete_instance($id) {
+/// Given an ID of an instance of this module,
+/// this function will permanently delete the instance
+/// and any data that depends on it.
+
+    if (! $book = get_record('book', 'id', $id)) {
+        return false;
+    }
+
+    $result = true;
+
+    delete_records('book_chapters', 'bookid', $book->id);
+
+    if (! delete_records('book', 'id', $book->id)) {
+        $result = false;
+    }
+
+    return $result;
+}
+
+function book_user_outline($course, $user, $mod, $book) {
+/// Return a small object with summary information about what a
+/// user has done with a given particular instance of this module
+/// Used for user activity reports.
+/// $return->time = the time they did it
+/// $return->info = a short text description
+
+    $return = null;
+    return $return;
+}
+
+function book_user_complete($course, $user, $mod, $book) {
+/// Print a detailed representation of what a  user has done with
+/// a given particular instance of this module, for user activity reports.
+
+    return true;
+}
+
+function book_print_recent_activity($course, $isteacher, $timestart) {
+/// Given a course and a time, this module should find recent activity
+/// that has occurred in book activities and print it out.
+/// Return true if there was output, or false is there was none.
+
+    global $CFG;
+
+    return false;  //  True if anything was printed, otherwise false
+}
+
+function book_cron () {
+/// Function to be run periodically according to the moodle cron
+/// This function searches for things that need to be done, such
+/// as sending out mail, toggling flags etc ...
+
+    global $CFG;
+
+    return true;
+}
+
+function book_grades($bookid) {
+/// Must return an array of grades for a given instance of this module,
+/// indexed by user.  It also returns a maximum allowed grade.
+
+    return NULL;
+}
+
+function book_get_participants($bookid) {
+//Must return an array of user records (all data) who are participants
+//for a given instance of book. Must include every user involved
+//in the instance, independient of his role (student, teacher, admin...)
+//See other modules as example.
+
+    return false;
+}
+
+function book_scale_used ($bookid,$scaleid) {
+//This function returns if a scale is being used by one book
+//it it has support for grading and scales. Commented code should be
+//modified if necessary. See forum, glossary or journal modules
+//as reference.
+
+    $return = false;
+
+    //$rec = get_record('book','id',$bookid,'scale',"-$scaleid");
+    //
+    //if (!empty($rec)  && !empty($scaleid)) {
+    //    $return = true;
+    //}
+
+    return $return;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////
+/// Any other book functions go here.  Each of them must have a name that
+/// starts with book_
+
+//check chapter ordering and
+//make sure subchapter is not first in book
+//hidden chapter must have all subchapters hidden too
+function book_check_structure($bookid) {
+    if ($chapters = get_records('book_chapters', 'bookid', $bookid, 'pagenum', 'id, pagenum, subchapter, hidden')) {
+        $first = true;
+        $hidesub = true;
+        $i = 1;
+        foreach($chapters as $ch) {
+            if ($first and $ch->subchapter) {
+                $ch->subchapter = 0;
+            }
+            $first = false;
+            if (!$ch->subchapter) {
+                $hidesub = $ch->hidden;
+            } else {
+                $ch->hidden = $hidesub ? true : $ch->hidden;
+            }
+            $ch->pagenum = $i;
+            update_record('book_chapters', $ch);
+            $i++;
+        }
+    }
+}
+
+
+/// prepare button to turn chapter editing on - connected with course editing
+function book_edit_button($id, $courseid, $chapterid) {
+    global $CFG, $USER;
+
+
+    if (isteacheredit($courseid)) {
+        if (!empty($USER->editing)) {
+            $string = get_string("turneditingoff");
+            $edit = '0';
+        } else {
+            $string = get_string("turneditingon");
+            $edit = '1';
+        }
+        return '<form target="'.$CFG->framename.'" method="get" action="'.$CFG->wwwroot.'/mod/book/view.php">'.
+               '<input type="hidden" name="id" value="'.$id.'" />'.
+               '<input type="hidden" name="chapterid" value="'.$chapterid.'" />'.
+               '<input type="hidden" name="edit" value="'.$edit.'" />'.
+               '<input type="submit" value="'.$string.'" /></form>';
+    } else {
+        return '';
+    }
+}
+
+/// general function for logging to table
+function book_log($str1, $str2, $level = 0) {
+    switch ($level) {
+        case 1:
+            echo '<tr><td><span class="dimmed_text">'.$str1.'</span></td><td><span class="dimmed_text">'.$str2.'</span></td></tr>';
+            break;
+        case 2:
+            echo '<tr><td><span style="color: rgb(255, 0, 0);">'.$str1.'</span></td><td><span style="color: rgb(255, 0, 0);">'.$str2.'</span></td></tr>';
+            break;
+        default:
+            echo '<tr><td>'.$str1.'</class></td><td>'.$str2.'</td></tr>';
+            break;
+    }
+}
+
+//=================================================
+// import functions
+//=================================================
+
+/// normalize relative links (= remove ..)
+function book_prepare_link($ref) {
+    if ($ref == '') {
+        return '';
+    }
+    $ref = str_replace('\\','/',$ref); //anti MS hack
+    $cnt = substr_count($ref, '..');
+    for($i=0; $i<$cnt; $i++) {
+        $ref = ereg_replace('[^/]+/\.\./', '', $ref);
+    }
+    //still any '..' left?? == error! error!
+    if (substr_count($ref, '..') > 0) {
+        return '';
+    }
+    if (ereg('[\|\`]', $ref)) {  // check for other bad characters
+        return '';
+    }
+    return $ref;
+}
+
+/// read chapter content from file
+function book_read_chapter($base, $ref) {
+    $file = $base.'/'.$ref;
+    if (filesize($file) <= 0 or !is_readable($file)) {
+        book_log($ref, get_string('error'), 2);
+        return;
+    }
+    //first read data
+    $handle = fopen($file, "rb");
+    $contents = fread($handle, filesize($file));
+    fclose($handle);
+    //extract title
+    if (preg_match('/<title>([^<]+)<\/title>/i', $contents, $matches)) {
+        $chapter->title = $matches[1];
+    } else {
+        $chapter->title = $ref;
+    }
+    //extract page body
+    if (preg_match('/<body[^>]*>(.+)<\/body>/is', $contents, $matches)) {
+        $chapter->content = $matches[1];
+    } else {
+        book_log($ref, get_string('error'), 2);
+        return;
+    }
+    book_log($ref, get_string('ok'));
+    $chapter->importsrc = $ref;
+    //extract page head
+    if (preg_match('/<head[^>]*>(.+)<\/head>/is', $contents, $matches)) {
+        $head = $matches[1];
+        if (preg_match('/charset=([^"]+)/is', $head, $matches)) {
+            $enc = $matches[1];
+            $textlib = textlib_get_instance();
+            $chapter->content = $textlib->convert($chapter->content, $enc, current_charset());
+            $chapter->title = $textlib->convert($chapter->title, $enc, current_charset());
+        }
+        if (preg_match_all('/<link[^>]+rel="stylesheet"[^>]*>/i', $head, $matches)) { //dlnsk extract links to css
+            for($i=0; $i<count($matches[0]); $i++){
+                $chapter->content = $matches[0][$i]."\n".$chapter->content;
+            }
+        }
+    }
+    return $chapter;
+}
+
+///relink images and relative links
+function book_relink($id, $bookid, $courseid) {
+    global $CFG;
+    if ($CFG->slasharguments) {
+        $coursebase = $CFG->wwwroot.'/file.php/'.$courseid;
+    } else {
+        $coursebase = $CFG->wwwroot.'/file.php?file=/'.$courseid;
+    }
+    $chapters = get_records('book_chapters', 'bookid', $bookid, 'pagenum', 'id, pagenum, title, content, importsrc');
+    $originals = array();
+    foreach($chapters as $ch) {
+        $originals[$ch->importsrc] = $ch;
+    }
+    foreach($chapters as $ch) {
+        $rel = substr($ch->importsrc, 0, strrpos($ch->importsrc, '/')+1);
+        $base = $coursebase.strtr(urlencode($rel), array("%2F" => "/"));  //for better internationalization (dlnsk) 
+        $modified = false;
+        //image relinking
+        if ($ch->importsrc && preg_match_all('/(<img[^>]+src=")([^"]+)("[^>]*>)/i', $ch->content, $images)) {
+            for($i = 0; $i<count($images[0]); $i++) {
+                if (!preg_match('/[a-z]+:/i', $images[2][$i])) { // not absolute link
+                    $link = book_prepare_link($base.$images[2][$i]);
+                    if ($link == '') {
+                        continue;
+                    }
+                    $origtag = $images[0][$i];
+                    $newtag = $images[1][$i].$link.$images[3][$i];
+                    $ch->content = str_replace($origtag, $newtag, $ch->content);
+                    $modified = true;
+                    book_log($ch->title, $images[2][$i].' --> '.$link);
+                }
+            }
+        }
+        //css relinking (dlnsk)
+        if ($ch->importsrc && preg_match_all('/(<link[^>]+href=")([^"]+)("[^>]*>)/i', $ch->content, $csslinks)) {
+            for($i = 0; $i<count($csslinks[0]); $i++) {
+                if (!preg_match('/[a-z]+:/i', $csslinks[2][$i])) { // not absolute link
+                    $link = book_prepare_link($base.$csslinks[2][$i]);
+                    if ($link == '') {
+                        continue;
+                    }
+                    $origtag = $csslinks[0][$i];
+                    $newtag = $csslinks[1][$i].$link.$csslinks[3][$i];
+                    $ch->content = str_replace($origtag, $newtag, $ch->content);
+                    $modified = true;
+                    book_log($ch->title, $csslinks[2][$i].' --> '.$link);
+                }
+            }
+        }
+        //general embed relinking - flash and others??
+        if ($ch->importsrc && preg_match_all('/(<embed[^>]+src=")([^"]+)("[^>]*>)/i', $ch->content, $embeds)) {
+            for($i = 0; $i<count($embeds[0]); $i++) {
+                if (!preg_match('/[a-z]+:/i', $embeds[2][$i])) { // not absolute link
+                    $link = book_prepare_link($base.$embeds[2][$i]);
+                    if ($link == '') {
+                        continue;
+                    }
+                    $origtag = $embeds[0][$i];
+                    $newtag = $embeds[1][$i].$link.$embeds[3][$i];
+                    $ch->content = str_replace($origtag, $newtag, $ch->content);
+                    $modified = true;
+                    book_log($ch->title, $embeds[2][$i].' --> '.$link);
+                }
+            }
+        }
+        //flash in IE <param name=movie value="something" - I do hate IE!
+        if ($ch->importsrc && preg_match_all('/<param[^>]+name\s*=\s*"?movie"?[^>]*>/i', $ch->content, $params)) {
+            for($i = 0; $i<count($params[0]); $i++) {
+                if (preg_match('/(value=\s*")([^"]+)(")/i', $params[0][$i], $values)) {
+                    if (!preg_match('/[a-z]+:/i', $values[2])) { // not absolute link
+                        $link = book_prepare_link($base.$values[2]);
+                        if ($link == '') {
+                            continue;
+                        }
+                        $newvalue = $values[1].$link.$values[3];
+                        $newparam = str_replace($values[0], $newvalue, $params[0][$i]);
+                        $ch->content = str_replace($params[0][$i], $newparam, $ch->content);
+                        $modified = true;
+                        book_log($ch->title, $values[2].' --> '.$link);
+                    }
+                }
+            }
+        }
+        //java applet - add code bases if not present!!!!
+        if ($ch->importsrc && preg_match_all('/<applet[^>]*>/i', $ch->content, $applets)) {
+            for($i = 0; $i<count($applets[0]); $i++) {
+                if (!stripos($applets[0][$i], 'codebase')) {
+                    $newapplet = str_ireplace('<applet', '<applet codebase="."', $applets[0][$i]);
+                    $ch->content = str_replace($applets[0][$i], $newapplet, $ch->content);
+                    $modified = true;
+                }
+            }
+        }
+        //relink java applet code bases
+        if ($ch->importsrc && preg_match_all('/(<applet[^>]+codebase=")([^"]+)("[^>]*>)/i', $ch->content, $codebases)) {
+            for($i = 0; $i<count($codebases[0]); $i++) {
+                if (!preg_match('/[a-z]+:/i', $codebases[2][$i])) { // not absolute link
+                    $link = book_prepare_link($base.$codebases[2][$i]);
+                    if ($link == '') {
+                        continue;
+                    }
+                    $origtag = $codebases[0][$i];
+                    $newtag = $codebases[1][$i].$link.$codebases[3][$i];
+                    $ch->content = str_replace($origtag, $newtag, $ch->content);
+                    $modified = true;
+                    book_log($ch->title, $codebases[2][$i].' --> '.$link);
+                }
+            }
+        }
+        //relative link conversion
+        if ($ch->importsrc && preg_match_all('/(<a[^>]+href=")([^"^#]*)(#[^"]*)?("[^>]*>)/i', $ch->content, $links)) {
+            for($i = 0; $i<count($links[0]); $i++) {
+                if ($links[2][$i] != ''                         //check for inner anchor links
+                && !preg_match('/[a-z]+:/i', $links[2][$i])) { //not absolute link
+                    $origtag = $links[0][$i];
+                    $target = book_prepare_link($rel.$links[2][$i]); //target chapter
+                    if ($target != '' && array_key_exists($target, $originals)) {
+                        $o = $originals[$target];
+                        $newtag = $links[1][$i].$CFG->wwwroot.'/mod/book/view.php?id='.$id.'&chapterid='.$o->id.$links[3][$i].$links[4][$i];
+                        $newtag = preg_replace('/target=[^\s>]/i','', $newtag);
+                        $ch->content = str_replace($origtag, $newtag, $ch->content);
+                        $modified = true;
+                        book_log($ch->title, $links[2][$i].$links[3][$i].' --> '.$CFG->wwwroot.'/mod/book/view.php?id='.$id.'&chapterid='.$o->id.$links[3][$i]);
+                    } else if ($target!='' && (!preg_match('/\.html$|\.htm$/i', $links[2][$i]))) { // other relative non html links converted to download links
+                        $target = book_prepare_link($base.$links[2][$i]);
+                        $origtag = $links[0][$i];
+                        $newtag = $links[1][$i].$target.$links[4][$i];
+                        $ch->content = str_replace($origtag, $newtag, $ch->content);
+                        $modified = true;
+                        book_log($ch->title, $links[2][$i].' --> '.$target);
+                    }
+                }
+            }
+        }
+        if ($modified) {
+            $ch->title = addslashes($ch->title);
+            $ch->content = addslashes($ch->content);
+            $ch->importsrc = addslashes($ch->importsrc);
+            if (!update_record('book_chapters', $ch)) {
+                error('Could not update your book');
+            }
+        }
+    }
+}
+
+?>
diff --git a/mod.html b/mod.html
new file mode 100644 (file)
index 0000000..d29c4bc
--- /dev/null
+++ b/mod.html
@@ -0,0 +1,116 @@
+<?php // $Id: mod.html,v 1.1 2006/03/12 18:39:59 skodak Exp $
+require($CFG->dirroot.'/mod/book/lib.php');
+
+if (empty($form->name)) {
+    $form->name = '';
+}
+if (empty($form->summary)) {
+    $form->summary = '';
+}
+if (empty($form->numbering)) {
+    $form->numbering = NUM_NONE;
+}
+if (empty($form->disableprinting)) {
+    $form->disableprinting = 0;
+}
+if (empty($form->customtitles)) {
+    $form->customtitles = 0;
+}
+?>
+
+<form name="form" method="post" action="mod.php">
+<table cellpadding="5" align="center">
+<tr valign="top">
+    <td align="right"><p><b><?php print_string('name') ?>:</b></p></td>
+    <td>
+        <input type="text" name="name" size="30" value="<?php  p($form->name) ?>">
+    </td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><p><b><?php print_string('summary') ?>:</b></p>
+     <font size="1">
+     <?php
+        helpbutton("writing", get_string("helpwriting"), "moodle", true, true);
+        echo "<br />";
+        helpbutton("questions", get_string("helpquestions"), "moodle", true, true);
+        echo "<br />";
+        if ($usehtmleditor) {
+           helpbutton("richtext", get_string("helprichtext"), "moodle", true, true);
+        } else {
+           emoticonhelpbutton("form", "description");
+        } 
+     ?>
+     <br />
+     </font>
+    </td>
+    <td>
+        <?php print_textarea($usehtmleditor, 20, 60, 680, 400, 'summary', $form->summary); ?>
+    </td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><p><b><?php print_string('numbering', 'book') ?>:</b></p></td>
+    <td>
+    <?php
+       choose_from_menu($NUMBERING_TYPE, 'numbering', $form->numbering, '');
+       helpbutton('numberingtype', get_string('numbering', 'book'), 'book');
+    ?>
+    </td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><p><b><?php print_string('disableprinting', 'book') ?>:</b></p></td>
+    <td>
+        <select size="1" name="disableprinting">
+            <option value="1" <?php
+             if ( $form->disableprinting ) {
+                echo 'selected="selected"';
+             }
+             ?>><?php echo get_string('yes') ?>
+            </option>
+            <option value="0" <?php
+             if ( !$form->disableprinting ) {
+                echo 'selected="selected"';
+             }
+             ?>><?php echo get_string('no') ?>
+            </option>
+        </select> <?php helpbutton('disableprinting', get_string('disableprinting', 'book'), 'book') ?>
+    </td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><p><b><?php print_string('customtitles', 'book') ?>:</b></p></td>
+    <td>
+        <select size="1" name="customtitles">
+            <option value="1" <?php
+             if ( $form->customtitles ) {
+                echo 'selected="selected"';
+             }
+             ?>><?php echo get_string('yes') ?>
+            </option>
+            <option value="0" <?php
+             if ( !$form->customtitles ) {
+                echo 'selected="selected"';
+             }
+             ?>><?php echo get_string('no') ?>
+            </option>
+        </select> <?php helpbutton('customtitles', get_string('customtitles', 'book'), 'book') ?>
+    </td>
+</tr>
+
+
+</table>
+<center>
+    <input type="submit" value="<?php  print_string('savechanges') ?>" />
+</center>
+    <input type="hidden" name="course"        value="<?php  p($form->course) ?>" />
+    <input type="hidden" name="sesskey"       value="<?php  p($form->sesskey) ?>" />
+    <input type="hidden" name="coursemodule"  value="<?php  p($form->coursemodule) ?>" />
+    <input type="hidden" name="section"       value="<?php  p($form->section) ?>" />
+    <input type="hidden" name="module"        value="<?php  p($form->module) ?>" />
+    <input type="hidden" name="modulename"    value="<?php  p($form->modulename) ?>" />
+    <input type="hidden" name="instance"      value="<?php  p($form->instance) ?>" />
+    <input type="hidden" name="mode"          value="<?php  p($form->mode) ?>" />
+</form>
+
diff --git a/move.php b/move.php
new file mode 100644 (file)
index 0000000..21fde86
--- /dev/null
+++ b/move.php
@@ -0,0 +1,148 @@
+<?PHP // $Id: move.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require('teacheraccess.php'); //page only for teachers
+$up  = optional_param('up', 0, PARAM_BOOL);
+
+
+$oldchapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum', 'id, pagenum, subchapter');
+
+$nothing = 0;
+
+$chapters = array();
+$chs = 0;
+$che = 0;
+$ts = 0;
+$te = 0;
+// create new ordered array and find chapters to be moved
+$i = 1;
+$found = 0;
+foreach ($oldchapters as $ch) {
+    $chapters[$i] = $ch;
+    if ($chapter->id === $ch->id) {
+        $chs = $i;
+        $che = $chs;
+        if ($ch->subchapter) {
+            $found = 1;//subchapter moves alone
+        }
+    } else if ($chs) {
+        if ($found) {
+            //nothing
+        } else if ($ch->subchapter) {
+            $che = $i; // chapter with subchapter(s)
+        } else {
+            $found = 1;
+        }
+    }
+    $i++;
+}
+
+// find target chapter(s)
+if ($chapters[$chs]->subchapter) { //moving single subchapter up or down
+    if ($up) {
+        if ($chs === 1) {
+            $nothing = 1; //already first
+        } else {
+            $ts = $chs - 1;
+            $te = $ts;
+        }
+    } else { //down
+        if ($che === count($chapters)) {
+            $nothing = 1; //already last
+        } else {
+            $ts = $che + 1;
+            $te = $ts;
+        }
+    }
+} else { // moving chapter and looking for next/previous chapter
+    if ($up) { //up
+        if ($chs === 1) {
+            $nothing = 1; //already first
+        } else {
+            $te = $chs - 1;
+            for($i = $chs-1; $i >= 1; $i--) {
+                if ($chapters[$i]->subchapter) {
+                    $ts = $i;
+                } else {
+                    $ts = $i;
+                    break;
+                }
+            }
+        }
+    } else { //down
+        if ($che === count($chapters)) {
+            $nothing = 1; //already last
+        } else {
+            $ts = $che + 1;
+            $found = 0;
+            for($i = $che+1; $i <= count($chapters); $i++) {
+                if ($chapters[$i]->subchapter) {
+                    $te = $i;
+                } else {
+                    if ($found) {
+                        break;
+                    } else {
+                        $te = $i;
+                        $found = 1;
+                    }
+                }
+            }
+        }
+    }
+}
+
+//recreated newly sorted list of chapters
+if (!$nothing) {
+    $newchapters = array();
+
+    if ($up) {
+        if ($ts > 1) {
+            for ($i=1; $i<$ts; $i++) {
+                $newchapters[] = $chapters[$i];
+            }
+        }
+        for ($i=$chs; $i<=$che; $i++) {
+            $newchapters[$i] = $chapters[$i];
+        }
+        for ($i=$ts; $i<=$te; $i++) {
+            $newchapters[$i] = $chapters[$i];
+        }
+        if ($che<count($chapters)) {
+            for ($i=$che; $i<=count($chapters); $i++) {
+                $newchapters[$i] = $chapters[$i];
+            }
+        }
+    } else {
+        if ($chs > 1) {
+            for ($i=1; $i<$chs; $i++) {
+                $newchapters[] = $chapters[$i];
+            }
+        }
+        for ($i=$ts; $i<=$te; $i++) {
+            $newchapters[$i] = $chapters[$i];
+        }
+        for ($i=$chs; $i<=$che; $i++) {
+            $newchapters[$i] = $chapters[$i];
+        }
+        if ($te<count($chapters)) {
+            for ($i=$te; $i<=count($chapters); $i++) {
+                $newchapters[$i] = $chapters[$i];
+            }
+        }
+    }
+
+    //store chapters in the new order
+    $i = 1;
+    foreach ($newchapters as $ch) {
+        $ch->pagenum = $i;
+        update_record('book_chapters', $ch);
+        $i++;
+    }
+}
+
+add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id);
+book_check_structure($book->id);
+redirect('view.php?id='.$cm->id.'&chapterid='.$chapter->id);
+die;
+
+?>
diff --git a/pix/add.gif b/pix/add.gif
new file mode 100644 (file)
index 0000000..3a0de01
Binary files /dev/null and b/pix/add.gif differ
diff --git a/pix/nav_exit.gif b/pix/nav_exit.gif
new file mode 100644 (file)
index 0000000..6177c8e
Binary files /dev/null and b/pix/nav_exit.gif differ
diff --git a/pix/nav_next.gif b/pix/nav_next.gif
new file mode 100644 (file)
index 0000000..17b4233
Binary files /dev/null and b/pix/nav_next.gif differ
diff --git a/pix/nav_prev.gif b/pix/nav_prev.gif
new file mode 100644 (file)
index 0000000..0a40548
Binary files /dev/null and b/pix/nav_prev.gif differ
diff --git a/pix/nav_prev_dis.gif b/pix/nav_prev_dis.gif
new file mode 100644 (file)
index 0000000..6815c16
Binary files /dev/null and b/pix/nav_prev_dis.gif differ
diff --git a/pix/nav_sep.gif b/pix/nav_sep.gif
new file mode 100644 (file)
index 0000000..821ac1e
Binary files /dev/null and b/pix/nav_sep.gif differ
diff --git a/pix/print_book.gif b/pix/print_book.gif
new file mode 100644 (file)
index 0000000..1931192
Binary files /dev/null and b/pix/print_book.gif differ
diff --git a/pix/print_chapter.gif b/pix/print_chapter.gif
new file mode 100644 (file)
index 0000000..b98dde9
Binary files /dev/null and b/pix/print_chapter.gif differ
diff --git a/print.php b/print.php
new file mode 100644 (file)
index 0000000..269c9a2
--- /dev/null
+++ b/print.php
@@ -0,0 +1,180 @@
+<?PHP // $Id: print.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id        = required_param('id', PARAM_INT);           // Course Module ID
+$chapterid = optional_param('chapterid', 0, PARAM_INT); // Chapter ID
+
+// =========================================================================
+// security checks START - teachers and students view
+// =========================================================================
+if ($CFG->forcelogin) {
+    require_login();
+}
+
+if (!$cm = get_record('course_modules', 'id', $id)) {
+    error('Course Module ID was incorrect');
+}
+
+if (!$course = get_record('course', 'id', $cm->course)) {
+    error('Course is misconfigured');
+}
+
+if ($course->category) {
+    require_login($course->id);
+}
+
+if (!$cm->visible and !isteacher($course->id)) {
+    notice(get_string('activityiscurrentlyhidden'));
+}
+if (!$book = get_record('book', 'id', $cm->instance)) {
+    error('Course module is incorrect');
+}
+
+if ($book->disableprinting) {
+    error('Printing is disabled');
+}
+
+//check all variables
+if ($chapterid) {
+    //single chapter printing
+    if (!$chapter = get_record('book_chapters', 'id', $chapterid)) {
+        error('Incorrect chapter ID');
+    }
+    if ($chapter->bookid != $book->id) {//chapter id not in this book!!!!
+        error('Chapter not in this book!');
+    }
+    if ($chapter->hidden) {
+        error('Only visible chapters can be printed');
+    }
+} else {
+    //complete book
+    $chapter = false;
+}
+unset($id);
+unset($chapterid);
+// =========================================================================
+// security checks END
+// =========================================================================
+
+$strbooks = get_string('modulenameplural', 'book');
+$strbook  = get_string('modulename', 'book');
+$strtop  = get_string('top', 'book');
+
+if (!empty($CFG->unicode)) {
+    $encoding = 'utf-8';
+} else {
+    $encoding = get_string('thischarset');
+}
+
+moodle_setlocale(); //workaround for buggy forced course language
+
+@header('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
+@header('Pragma: no-cache');
+@header('Expires: ');          
+@header('Accept-Ranges: none');
+@header('Content-type: text/html; charset='.$encoding);
+
+$formatoptions = new stdClass;
+$formatoptions->noclean = true;
+
+if ($chapter) {
+    add_to_log($course->id, 'book', 'print', 'print.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
+
+    $chapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum, title');
+
+    $print = 0;
+    $edit = 0;
+    require('toc.php');
+
+    /// page header
+    ?>
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+    <html>
+    <head>
+      <title><?PHP echo str_replace('"', '&quot;', $book->name) ?></title>
+      <meta http-equiv="Content-Type" content="text/html; charset=<?PHP echo $encoding ?>" />
+      <meta name="description" content="<?PHP echo str_replace('"', '&quot;', $book->name) ?>" />
+      <link rel="stylesheet" type="text/css" href="book_print.css" />
+    </head>
+    <body>
+    <a name="top"></a>
+    <div class="chapter">
+    <?PHP
+
+    if (!$book->customtitles) {
+        if ($currsubtitle == '&nbsp;') {
+            echo '<p class="book_chapter_title">'.$currtitle.'<p>';
+        } else {
+            echo '<p class="book_chapter_title">'.$currtitle.'<br />'.$currsubtitle.'</p>';
+        }
+    }
+    echo format_text($chapter->content, FORMAT_HTML, $formatoptions, $course->id);
+    echo '</div>';
+    echo '</body> </html>';
+
+} else {
+    add_to_log($course->id, 'book', 'print', 'print.php?id='.$cm->id, $book->id, $cm->id);
+    $site = get_record('course','id',1);
+    $chapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum');
+
+    /// page header
+    ?>
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+    <html>
+    <head>
+      <title><?PHP echo str_replace('"', '&quot;', $book->name) ?></title>
+      <meta http-equiv="Content-Type" content="text/html; charset=<?PHP echo $encoding ?>" />
+      <meta name="description" content="<?PHP echo str_replace('"', '&quot;', $book->name) ?>" />
+      <link rel="stylesheet" type="text/css" href="book_print.css" />
+    </head>
+    <body>
+    <a name="top"></a>
+    <p class="book_title"><?PHP echo strip_tags($book->name) ?></p>
+    <p class="book_summary"><?PHP echo strip_tags($book->summary) ?></p>
+    <div class="book_info"><table>
+    <tr>
+    <td><?PHP echo get_string('site') ?>:</td>
+    <td><a href="<?PHP echo $CFG->wwwroot ?>"><?PHP echo strip_tags($site->fullname) ?></a></td>
+    </tr><tr>
+    <td><?PHP echo get_string('course') ?>:</td>
+    <td><?PHP echo strip_tags($course->fullname) ?></td>
+    </tr><tr>
+    <td><?PHP echo get_string('modulename', 'book') ?>:</td>
+    <td><?PHP echo strip_tags($book->name) ?></td>
+    </tr><tr>
+    <td><?PHP echo get_string('printedby', 'book') ?>:</td>
+    <td><?PHP echo strip_tags(fullname($USER, true)) ?></td>
+    </tr><tr>
+    <td><?PHP echo get_string('printdate','book') ?>:</td>
+    <td><?PHP echo userdate(time()) ?></td>
+    </tr>
+    </table></div>
+
+    <?PHP
+    $print = 1;
+    require('toc.php');
+    echo $toc;
+    // chapters
+    $link1 = $CFG->wwwroot.'/mod/book/view.php?id='.$course->id.'&chapterid=';
+    $link2 = $CFG->wwwroot.'/mod/book/view.php?id='.$course->id;
+    foreach ($chapters as $ch) {
+        if (!$ch->hidden) {
+            echo '<div class="book_chapter"><a name="ch'.$ch->id.'"></a>';
+            if (!$book->customtitles) {
+                echo '<p class="book_chapter_title">'.$titles[$ch->id].'</p>';
+            }
+            $content = str_replace($link1, '#ch', $ch->content);
+            $content = str_replace($link2, '#top', $content);
+            echo format_text($content, FORMAT_HTML, $formatoptions, $course->id);
+            echo '</div>';
+            //echo '<a href="#toc">'.$strtop.'</a>';
+
+        }
+    }
+    echo '</body> </html>';
+}
+
+?>
diff --git a/restorelib.php b/restorelib.php
new file mode 100644 (file)
index 0000000..739e6af
--- /dev/null
@@ -0,0 +1,380 @@
+<?PHP // $Id: restorelib.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+    //This php script contains all the stuff to backup/restore
+    //book mods
+
+    //This is the "graphical" structure of the book mod:
+    //
+    //                       book
+    //                     (CL,pk->id)
+    //                        |
+    //                        |
+    //                        |
+    //                     book_chapters
+    //               (CL,pk->id, fk->bookid)
+    //
+    // Meaning: pk->primary key field of the table
+    //          fk->foreign key to link with parent
+    //          nt->nested field (recursive data)
+    //          CL->course level info
+    //          UL->user level info
+    //          files->table may have files)
+    //
+    //-----------------------------------------------------------
+
+
+    //This function executes all the restore procedure about this mod
+    function book_restore_mods($mod,$restore) {
+
+        global $CFG;
+
+        $status = true;
+
+        //Get record from backup_ids
+        $data = backup_getid($restore->backup_unique_code,$mod->modtype,$mod->id);
+
+        if ($data) {
+            //Now get completed xmlized object
+            $info = $data->info;
+            //traverse_xmlize($info);                                                                     //Debug
+            //print_object ($GLOBALS['traverse_array']);                                                  //Debug
+            //$GLOBALS['traverse_array']="";                                                              //Debug
+
+            //Now, build the BOOK record structure
+            $book->course = $restore->course_id;
+            $book->name = backup_todb($info['MOD']['#']['NAME']['0']['#']);
+            $book->summary = backup_todb($info['MOD']['#']['SUMMARY']['0']['#']);
+            $book->numbering = backup_todb($info['MOD']['#']['NUMBERING']['0']['#']);
+            $book->disableprinting = backup_todb($info['MOD']['#']['DISABLEPRINTING']['0']['#']);
+            $book->customtitles = backup_todb($info['MOD']['#']['CUSTOMTITLES']['0']['#']);
+            $book->timecreated = $info['MOD']['#']['TIMECREATED']['0']['#'];
+            $book->timemodified = $info['MOD']['#']['TIMEMODIFIED']['0']['#'];
+
+            //The structure is equal to the db, so insert the book
+            $newid = insert_record ('book',$book);
+
+            //Do some output
+            if (!defined('RESTORE_SILENTLY')) {
+                echo '<ul><li>'.get_string('modulename','book').' "'.$book->name.'"<br>';
+            }
+            backup_flush(300);
+
+            if ($newid) {
+                //We have the newid, update backup_ids
+                backup_putid($restore->backup_unique_code,$mod->modtype,
+                             $mod->id, $newid);
+                //now restore chapters
+                $status = book_chapters_restore($mod->id,$newid,$info,$restore);
+
+            } else {
+                $status = false;
+            }
+            //Finalize ul
+            if (!defined('RESTORE_SILENTLY')) {
+                echo "</ul>";
+            }
+
+        } else {
+            $status = false;
+        }
+
+        return $status;
+    }
+
+    //This function restores the book_chapters
+    function book_chapters_restore($old_book_id, $new_book_id,$info,$restore) {
+
+        global $CFG;
+
+        $status = true;
+
+        //Get the chapters array
+        $chapters = $info['MOD']['#']['CHAPTERS']['0']['#']['CHAPTER'];
+
+        //Iterate over chapters
+        for($i = 0; $i < sizeof($chapters); $i++) {
+            $sub_info = $chapters[$i];
+            //traverse_xmlize($sub_info);                                                                 //Debug
+            //print_object ($GLOBALS['traverse_array']);                                                  //Debug
+            //$GLOBALS['traverse_array']="";                                                              //Debug
+
+            //We'll need this later!!
+            $old_id = backup_todb($sub_info['#']['ID']['0']['#']);
+
+            //Now, build the ASSIGNMENT_CHAPTERS record structure
+            $chapter->bookid = $new_book_id;
+            $chapter->pagenum = backup_todb($sub_info['#']['PAGENUM']['0']['#']);
+            $chapter->subchapter = backup_todb($sub_info['#']['SUBCHAPTER']['0']['#']);
+            $chapter->title = backup_todb($sub_info['#']['TITLE']['0']['#']);
+            $chapter->content = backup_todb($sub_info['#']['CONTENT']['0']['#']);
+            $chapter->hidden = backup_todb($sub_info['#']['HIDDEN']['0']['#']);
+            $chapter->timecreated = backup_todb($sub_info['#']['TIMECREATED']['0']['#']);
+            $chapter->timemodified = backup_todb($sub_info['#']['TIMEMODIFIED']['0']['#']);
+            $chapter->importsrc = backup_todb($sub_info['#']['IMPORTSRC']['0']['#']);
+
+            //The structure is equal to the db, so insert the book_chapters
+            $newid = insert_record ('book_chapters',$chapter);
+
+            //Do some output
+            if (($i+1) % 50 == 0) {
+                if (!defined('RESTORE_SILENTLY')) {
+                    echo '.';
+                    if (($i+1) % 1000 == 0) {
+                        echo '<br>';
+                    }
+                }
+                backup_flush(300);
+            }
+
+            if ($newid) {
+                //We have the newid, update backup_ids
+                backup_putid($restore->backup_unique_code,'book_chapters',$old_id,
+                             $newid);
+            } else {
+                $status = false;
+            }
+        }
+        return $status;
+    }
+
+    //This function returns a log record with all the necessay transformations
+    //done. It's used by restore_log_module() to restore modules log.
+    function book_restore_logs($restore,$log) {
+
+        $status = false;
+
+        //Depending of the action, we recode different things
+        switch ($log->action) {
+            case "update":
+            case "view": //TO DO ... verify!!!
+               if ($log->cmid) {
+                    //Get the new_id of the chapter (to recode the url field)
+                    $ch = backup_getid($restore->backup_unique_code,"book_chapters",$log->info);
+                    if ($pag) {
+                        $log->url = "view.php?id=".$log->cmid."&chapterid=".$ch->new_id;
+                        $log->info = $ch->new_id;
+                        $status = true;
+                    }
+                }
+                break;
+            case "view all":
+                if ($log->cmid) {
+                    //Get the new_id of the module (to recode the info field)
+                    $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info);
+                    if ($mod) {
+                        $log->url = "view.php?id=".$log->cmid;
+                        $log->info = $mod->new_id;
+                        $status = true;
+                    }
+                }
+                break;
+            case "export":
+                if ($log->cmid) {
+                    //Get the new_id of the module (to recode the info field)
+                    $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info);
+                    if ($mod) {
+                        $log->url = "export.php?id=".$log->cmid;
+                        $log->info = $mod->new_id;
+                        $status = true;
+                    }
+                }
+                break;
+            case "print":
+                if ($log->cmid) {
+                    //Get the new_id of the module (to recode the info field)
+                    $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info);
+                    if ($mod) {
+                        $log->url = "print.php?id=".$log->cmid;
+                        $log->info = $mod->new_id;
+                        $status = true;
+                    }
+                }
+                break;
+            default:
+                if (!defined('RESTORE_SILENTLY')) {
+                    echo "action (".$log->module."-".$log->action.") unknow. Not restored<br>";                 //Debug
+                }
+                break;
+        }
+
+        if ($status) {
+            $status = $log;
+        }
+        return $status;
+    }
+
+    //Return a content decoded to support interactivities linking. Every module
+    //should have its own. They are called automatically from
+    //book_decode_content_links_caller() function in each module
+    //in the restore process
+    function book_decode_content_links ($content,$restore) {
+
+        global $CFG;
+
+        $result = $content;
+
+        //Link to the list of books
+
+        $searchstring='/\$@(BOOKINDEX)\*([0-9]+)@\$/';
+        //We look for it
+        preg_match_all($searchstring,$content,$foundset);
+        //If found, then we are going to look for its new id (in backup tables)
+        if ($foundset[0]) {
+            //print_object($foundset);                                     //Debug
+            //Iterate over foundset[2]. They are the old_ids
+            foreach($foundset[2] as $old_id) {
+                //We get the needed variables here (course id)
+                $rec = backup_getid($restore->backup_unique_code,"course",$old_id);
+                //Personalize the searchstring
+                $searchstring='/\$@(BOOKINDEX)\*('.$old_id.')@\$/';
+                //If it is a link to this course, update the link to its new location
+                if($rec->new_id) {
+                    //Now replace it
+                    $result= preg_replace($searchstring,$CFG->wwwroot.'/mod/book/index.php?id='.$rec->new_id,$result);
+                } else {
+                    //It's a foreign link so leave it as original
+                    $result= preg_replace($searchstring,$restore->original_wwwroot.'/mod/book/index.php?id='.$old_id,$result);
+                }
+            }
+        }
+
+
+        //Links to specific chapters of books
+
+        $searchstring='/\$@(BOOKCHAPTER)\*([0-9]+)\*([0-9]+)@\$/';
+        //We look for it
+        preg_match_all($searchstring,$result,$foundset);
+        //If found, then we are going to look for its new id (in backup tables)
+        if ($foundset[0]) {
+            //print_object($foundset);                                     //Debug
+            //Iterate over foundset[2] and foundset[3]. They are the old_ids
+            foreach($foundset[2] as $key => $old_id) {
+                $old_id2 = $foundset[3][$key];
+                //We get the needed variables here (discussion id and post id)
+                $rec = backup_getid($restore->backup_unique_code,'course_modules',$old_id);
+                $rec2 = backup_getid($restore->backup_unique_code,'book_chapters',$old_id2);
+                //Personalize the searchstring
+                $searchstring='/\$@(BOOKCHAPTER)\*('.$old_id.')\*('.$old_id2.')@\$/';
+                //If it is a link to this course, update the link to its new location
+                if($rec->new_id && $rec2->new_id) {
+                    //Now replace it
+                    $result= preg_replace($searchstring,$CFG->wwwroot.'/mod/book/view.php?id='.$rec->new_id.'&chapterid='.$rec2->new_id,$result);
+                } else {
+                    //It's a foreign link so leave it as original
+                    $result= preg_replace($searchstring,$restore->original_wwwroot.'/mod/book/view.php?id='.$old_id.'&chapterid='.$old_id2,$result);
+                }
+            }
+        }
+
+
+        //Links to first chapters of books
+
+        $searchstring='/\$@(BOOKSTART)\*([0-9]+)@\$/';
+        //We look for it
+        preg_match_all($searchstring,$result,$foundset);
+        //If found, then we are going to look for its new id (in backup tables)
+        if ($foundset[0]) {
+            //print_object($foundset);                                     //Debug
+            //Iterate over foundset[2]. They are the old_ids
+            foreach($foundset[2] as $old_id) {
+                //We get the needed variables here (course_modules id)
+                $rec = backup_getid($restore->backup_unique_code,"course_modules",$old_id);
+                //Personalize the searchstring
+                $searchstring='/\$@(BOOKSTART)\*('.$old_id.')@\$/';
+                //If it is a link to this course, update the link to its new location
+                if($rec->new_id) {
+                    //Now replace it
+                    $result= preg_replace($searchstring,$CFG->wwwroot.'/mod/book/view.php?id='.$rec->new_id,$result);
+                } else {
+                    //It's a foreign link so leave it as original
+                    $result= preg_replace($searchstring,$restore->original_wwwroot.'/mod/book/view.php?id='.$old_id,$result);
+                }
+            }
+        }
+
+        return $result;
+    }
+
+    //This function makes all the necessary calls to xxxx_decode_content_links()
+    //function in each module, passing them the desired contents to be decoded
+    //from backup format to destination site/course in order to mantain inter-activities
+    //working in the backup/restore process. It's called from restore_decode_content_links()
+    //function in restore process
+    function book_decode_content_links_caller($restore) {
+        global $CFG;
+        $status = true;
+
+        //Decode every BOOK (summary) in the coure
+        if ($books = get_records_sql ("SELECT b.id, b.summary
+                                   FROM {$CFG->prefix}book b
+                                   WHERE b.course = $restore->course_id")) {
+            //Iterate over each book->summary
+            $i = 0;   //Counter to send some output to the browser to avoid timeouts
+            foreach ($books as $book) {
+                //Increment counter
+                $i++;
+                $content = $book->summary;
+                $result = restore_decode_content_links_worker($content,$restore);
+                if ($result != $content) {
+                    //Update record
+                    $book->summary = addslashes($result);
+                    $status = update_record('book',$book);
+                    if ($CFG->debug>7) {
+                        if (!defined('RESTORE_SILENTLY')) {
+                            echo '<br /><hr />'.htmlentities($content).'<br />changed to<br />'.htmlentities($result).'<hr /><br />';
+                        }
+                    }
+                }
+                //Do some output
+                if (($i+1) % 5 == 0) {
+                    if (!defined('RESTORE_SILENTLY')) {
+                        echo '.';
+                        if (($i+1) % 100 == 0) {
+                            echo '<br />';
+                        }
+                    }
+                    backup_flush(300);
+                }
+            }
+        }
+
+        //Decode every CHAPTER in the course
+        if ($chapters = get_records_sql ("SELECT ch.id, ch.content
+                                   FROM {$CFG->prefix}book b,
+                                        {$CFG->prefix}book_chapters ch
+                                   WHERE b.course = $restore->course_id AND
+                                         ch.bookid = b.id")) {
+            //Iterate over each chapter->content
+            $i = 0;   //Counter to send some output to the browser to avoid timeouts
+            foreach ($chapters as $chapter) {
+                //Increment counter
+                $i++;
+                $content = $chapter->content;
+                $result = restore_decode_content_links_worker($content,$restore);
+                if ($result != $content) {
+                    //Update record
+                    $chapter->content = addslashes($result);
+                    $status = update_record('book_chapters',$chapter);
+                    if ($CFG->debug>7) {
+                        if (!defined('RESTORE_SILENTLY')) {
+                            echo '<br /><hr />'.htmlentities($content).'<br />changed to<br />'.htmlentities($result).'<hr /><br />';
+                        }
+                    }
+                }
+                //Do some output
+                if (($i+1) % 5 == 0) {
+                    if (!defined('RESTORE_SILENTLY')) {
+                        echo '.';
+                        if (($i+1) % 100 == 0) {
+                            echo '<br />';
+                        }
+                    }
+                    backup_flush(300);
+                }
+            }
+        }
+
+        return $status;
+    }
+
+
+?>
diff --git a/show.php b/show.php
new file mode 100644 (file)
index 0000000..a4104fe
--- /dev/null
+++ b/show.php
@@ -0,0 +1,38 @@
+<?PHP // $Id: show.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require('teacheraccess.php'); //page only for teachers
+
+///switch hidden state
+$chapter->hidden = $chapter->hidden ? 0 : 1;
+
+///add slashes to all text fields
+$chapter->content = addslashes($chapter->content);
+$chapter->title = addslashes($chapter->title);
+$chapter->importsrc = addslashes($chapter->importsrc);
+if (!update_record('book_chapters', $chapter)) {
+    error('Could not update your book');
+}
+
+///change visibility of subchapters too
+if (!$chapter->subchapter) {
+    $chapters = get_records('book_chapters', 'bookid', $book->id, 'pagenum', 'id, subchapter, hidden');
+    $found = 0;
+    foreach($chapters as $ch) {
+        if ($ch->id === $chapter->id) {
+            $found = 1;
+        } else if ($found and $ch->subchapter) {
+            $ch->hidden = $chapter->hidden;
+            update_record('book_chapters', $ch);
+        } else if ($found) {
+            break;
+        }
+    }
+}
+
+add_to_log($course->id, 'course', 'update mod', '../mod/book/view.php?id='.$cm->id, 'book '.$book->id);
+add_to_log($course->id, 'book', 'update', 'view.php?id='.$cm->id, $book->id, $cm->id);
+book_check_structure($book->id);
+redirect('view.php?id='.$cm->id.'&chapterid='.$chapter->id);
+die;
+
+?>
diff --git a/teacheraccess.php b/teacheraccess.php
new file mode 100644 (file)
index 0000000..5f2f6e2
--- /dev/null
@@ -0,0 +1,46 @@
+<?PHP // $Id: teacheraccess.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+///standard routine to allow only teachers in
+///check of $id and $chapterid parameters
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id        = required_param('id', PARAM_INT);        // Course Module ID
+$chapterid = required_param('chapterid', PARAM_INT); // Chapter ID
+
+require_login();
+
+if (!confirm_sesskey()) {
+    error(get_string('confirmsesskeybad', 'error')); 
+}
+
+if (!$cm = get_record('course_modules', 'id', $id)) {
+    error('Course Module ID was incorrect');
+}
+
+if (!$course = get_record('course', 'id', $cm->course)) {
+    error('Course is misconfigured');
+}
+
+if (!isteacheredit($course->id)) {
+    error('Only editing teachers can edit books!');
+}
+
+if (!$book = get_record('book', 'id', $cm->instance)) {
+    error('Course module is incorrect');
+}
+
+if (!$chapter = get_record('book_chapters', 'id', $chapterid)) {
+    error('Incorrect chapter ID');
+}
+
+if ($chapter->bookid != $book->id) {//chapter id not in this book!!!!
+    error('Chapter not in this book!');
+}
+
+//check all variables
+unset($id);
+unset($chapterid);
+
+?>
diff --git a/toc.php b/toc.php
new file mode 100644 (file)
index 0000000..6b33297
--- /dev/null
+++ b/toc.php
@@ -0,0 +1,193 @@
+<?PHP // $Id: toc.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
+/// included from mod/book/view.php and print.php
+///
+/// uses:
+///   $chapters - all book chapters
+///   $chapter - may be false
+///   $cm - course module
+///   $book - book
+///   $edit - force editing view
+
+
+/// fills:
+///   $toc
+///   $title (not for print)
+
+$currtitle = '';    //active chapter title (plain text)
+$currsubtitle = ''; //active subchapter if any
+$prevtitle = '&nbsp;';
+$toc = '';          //representation of toc (HTML)
+
+$nch = 0; //chapter number
+$ns = 0;  //subchapter number
+$title = '';
+$first = 1;
+
+if (!isset($print)) {
+    $print = 0;
+}
+
+switch ($book->numbering) {
+  case NUM_NONE:
+      $toc .= '<div class="book_toc_none">';
+      break;
+  case NUM_NUMBERS:
+      $toc .= '<div class="book_toc_numbered">';
+      break;
+  case NUM_BULLETS:
+      $toc .= '<div class="book_toc_bullets">';
+      break;
+  case NUM_INDENTED:
+      $toc .= '<div class="book_toc_indented">';
+      break;
+}
+
+
+if ($print) { ///TOC for printing
+    $toc .= '<a name="toc"></a>';
+    if ($book->customtitles) {
+        $toc .= '<h1>'.get_string('toc', 'book').'</h1>';
+    } else {
+        $toc .= '<p class="book_chapter_title">'.get_string('toc', 'book').'</p>';
+    }
+    $titles = array();
+    $toc .= '<ul>';
+    foreach($chapters as $ch) {
+        $title = trim(strip_tags($ch->title));
+        if (!$ch->hidden) {
+            if (!$ch->subchapter) {
+                $nch++;
+                $ns = 0;
+                $toc .= ($first) ? '<li>' : '</ul></li><li>';
+                if ($book->numbering === NUM_NUMBERS) {
+                      $title = "$nch $title";
+                }
+            } else {
+                $ns++;
+                $toc .= ($first) ? '<li><ul><li>' : '<li>';
+                if ($book->numbering === NUM_NUMBERS) {
+                      $title = "$nch.$ns $title";
+                }
+            }
+            $titles[$ch->id] = $title;
+            $toc .= '<a title="'.htmlspecialchars($title).'" href="#ch'.$ch->id.'">'.$title.'</a>';
+            $toc .= (!$ch->subchapter) ? '<ul>' : '</li>';
+            $first = 0;
+        }
+    }
+    $toc .= '</ul></li></ul>';
+} else if ($edit) { ///teacher's TOC
+    $toc .= '<font size="-1"><ul>';
+    $i = 0;
+    foreach($chapters as $ch) {
+        $i++;
+        $title = trim(strip_tags($ch->title));
+        if (!$ch->subchapter) {
+            $toc .= ($first) ? '<li>' : '</ul></li><li>';
+            if (!$ch->hidden) {
+                $nch++;
+                $ns = 0;
+                if ($book->numbering === NUM_NUMBERS) {
+                    $title = "$nch $title";
+                }
+            } else {
+                if ($book->numbering === NUM_NUMBERS) {
+                    $title = "x $title";
+                }
+                $title = '<span class="dimmed_text">'.$title.'</span>';
+            }
+            $prevtitle = $title;
+        } else {
+            $toc .= ($first) ? '<li><ul><li>' : '<li>';
+            if (!$ch->hidden) {
+                $ns++;
+                if ($book->numbering === NUM_NUMBERS) {
+                    $title = "$nch.$ns $title";
+                }
+            } else {
+                if ($book->numbering === NUM_NUMBERS) {
+                    $title = "x.x $title";
+                }
+                $title = '<span class="dimmed_text">'.$title.'</span>';
+            }
+        }
+
+        if ($ch->id === $chapter->id) {
+            $toc .= '<strong>'.$title.'</strong>';
+            if ($ch->subchapter) {
+                $currtitle = $prevtitle;
+                $currsubtitle = $title;
+            } else {
+                $currtitle = $title;
+                $currsubtitle = '&nbsp;';
+            }
+        } else {
+            $toc .= '<a title="'.htmlspecialchars($title).'" href="view.php?id='.$cm->id.'&chapterid='.$ch->id.'">'.$title.'</a>';
+        }
+        $toc .=  '&nbsp;&nbsp;';
+        if ($i != 1) {
+            $toc .=  ' <a title="'.get_string('up').'" href="move.php?id='.$cm->id.'&chapterid='.$ch->id.'&up=1&sesskey='.$USER->sesskey.'"><img src="'.$CFG->pixpath.'/t/up.gif" height="11" width="11" border="0" /></a>';
+        }
+        if ($i != count($chapters)) {
+            $toc .=  ' <a title="'.get_string('down').'" href="move.php?id='.$cm->id.'&chapterid='.$ch->id.'&up=0&sesskey='.$USER->sesskey.'"><img src="'.$CFG->pixpath.'/t/down.gif" height="11" width="11" border="0" /></a>';
+        }
+        $toc .=  ' <a title="'.get_string('edit').'" href="edit.php?id='.$cm->id.'&chapterid='.$ch->id.'"><img src="'.$CFG->pixpath.'/t/edit.gif" height="11" width="11" border="0" /></a>';
+        $toc .=  ' <a title="'.get_string('delete').'" href="delete.php?id='.$cm->id.'&chapterid='.$ch->id.'&sesskey='.$USER->sesskey.'"><img src="'.$CFG->pixpath.'/t/delete.gif" height="11" width="11" border="0" /></a>';
+        if ($ch->hidden) {
+            $toc .= ' <a title="'.get_string('show').'" href="show.php?id='.$cm->id.'&chapterid='.$ch->id.'&sesskey='.$USER->sesskey.'"><img src="'.$CFG->pixpath.'/t/show.gif" height="11" width="11" border="0" /></a>';
+        } else {
+            $toc .= ' <a title="'.get_string('hide').'" href="show.php?id='.$cm->id.'&chapterid='.$ch->id.'&sesskey='.$USER->sesskey.'"><img src="'.$CFG->pixpath.'/t/hide.gif" height="11" width="11" border="0" /></a>';
+        }
+        $toc .= ' <a title="'.get_string('addafter', 'book').'" href="edit.php?id='.$cm->id.'&pagenum='.$ch->pagenum.'&subchapter='.$ch->subchapter.'"><img src="pix/add.gif" height="11" width="11" border="0" /></a>';
+
+        $toc .= (!$ch->subchapter) ? '<ul>' : '</li>';
+        $first = 0;
+    }
+    $toc .= '</ul></li></ul></font>';
+} else { //normal students view
+    $toc .= '<font size="-1"><ul>';
+    foreach($chapters as $ch) {
+        $title = trim(strip_tags($ch->title));
+        if (!$ch->hidden) {
+            if (!$ch->subchapter) {
+                $nch++;
+                $ns = 0;
+                $toc .= ($first) ? '<li>' : '</ul></li><li>';
+                if ($book->numbering === NUM_NUMBERS) {
+                      $title = "$nch $title";
+                }
+            $prevtitle = $title;
+            } else {
+                $ns++;
+                $toc .= ($first) ? '<li><ul><li>' : '<li>';
+                if ($book->numbering === NUM_NUMBERS) {
+                      $title = "$nch.$ns $title";
+                }
+            }
+            if ($ch->id === $chapter->id) {
+                $toc .= '<strong>'.$title.'</strong>';
+                if ($ch->subchapter) {
+                    $currtitle = $prevtitle;
+                    $currsubtitle = $title;
+                } else {
+                    $currtitle = $title;
+                    $currsubtitle = '&nbsp;';
+                }
+            } else {
+                $toc .= '<a title="'.htmlspecialchars($title).'" href="view.php?id='.$cm->id.'&chapterid='.$ch->id.'">'.$title.'</a>';
+            }
+            $toc .= (!$ch->subchapter) ? '<ul>' : '</li>';
+            $first = 0;
+        }
+    }
+    $toc .= '</ul></li></ul></font>';
+}
+
+$toc .= '</div>';
+
+$toc = str_replace('<ul></ul>', '', $toc); //cleanup of invalid structures
+
+?>
diff --git a/version.php b/version.php
new file mode 100644 (file)
index 0000000..e5b3077
--- /dev/null
@@ -0,0 +1,13 @@
+<?PHP // $Id: version.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+/////////////////////////////////////////////////////////////////////////////////
+///  Called by moodle_needs_upgrading() and /admin/index.php
+/////////////////////////////////////////////////////////////////////////////////
+
+$module->version  = 2006031200;  // The current module version (Date: YYYYMMDDXX)
+$module->requires = 2006031000;  // Requires this Moodle version
+$module->cron     = 0;           // Period for cron to check this module (secs)
+
+$release = "1.3alpha";                // User-friendly version number
+
+?>
diff --git a/view.php b/view.php
new file mode 100644 (file)
index 0000000..6aff971
--- /dev/null
+++ b/view.php
@@ -0,0 +1,252 @@
+<?PHP // $Id: view.php,v 1.1 2006/03/12 18:39:59 skodak Exp $
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id        = required_param('id', PARAM_INT);           // Course Module ID
+$chapterid = optional_param('chapterid', 0, PARAM_INT); // Chapter ID
+$edit      = optional_param('edit', -1, PARAM_BOOL);     // Edit mode
+
+// =========================================================================
+// security checks START - teachers edit; students view
+// =========================================================================
+if ($CFG->forcelogin) {
+    require_login();
+}
+
+if (!$cm = get_record('course_modules', 'id', $id)) {
+    error('Course Module ID is incorrect');
+}
+
+if (!$course = get_record('course', 'id', $cm->course)) {
+    error('Course is misconfigured');
+}
+
+if ($course->category) {
+    require_login($course->id);
+}
+
+if (!$book = get_record('book', 'id', $cm->instance)) {
+    error('Course module is incorrect');
+}
+
+$isteacher = isteacheredit($course->id);
+if ($isteacher) {
+    if($edit != -1) {
+        $USER->editing = $edit;
+    } else {
+        if (isset($USER->editing)) {
+            $edit = $USER->editing;
+        } else {
+            $edit = 0;
+        }
+    }
+} else {
+    $edit = 0;
+}
+
+if (!$cm->visible and !$isteacher) {
+    notice(get_string('activityiscurrentlyhidden'));
+}
+
+/// read chapters
+$select = $isteacher ? "bookid = $book->id" : "bookid = $book->id AND hidden = 0";
+$chapters = get_records_select('book_chapters', $select, 'pagenum', 'id, pagenum, subchapter, title, hidden');
+
+if (!$chapters) {
+    if ($isteacher) {
+        redirect('edit.php?id='.$cm->id); //no chapters - add new one
+        die;
+    } else {
+        error('Error reading book chapters.');
+    }
+}
+/// check chapterid and read chapter data
+if ($chapterid == '0') { // go to first chapter if no given
+    foreach($chapters as $ch) {
+        if ($isteacher) {
+            $chapterid = $ch->id;
+            break;
+        }
+        if (!$ch->hidden) {
+            $chapterid = $ch->id;
+            break;
+        }
+    }
+}
+
+
+if (!$chapter = get_record('book_chapters', 'id', $chapterid)) {
+    error('Error reading book chapters.');
+}
+
+//check all variables
+unset($id);
+unset($chapterid);
+
+/// chapter is hidden for students
+if (!$isteacher and $chapter->hidden) {
+    error('Error reading book chapters.');
+}
+
+/// chapter not part of this book!
+if ($chapter->bookid != $book->id) {
+    error('Chapter not part of this book!');
+}
+// =========================================================================
+// security checks  END
+// =========================================================================
+
+add_to_log($course->id, 'book', 'view', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
+
+
+///read standard strings
+$strbooks = get_string('modulenameplural', 'book');
+$strbook  = get_string('modulename', 'book');
+$strTOC = get_string('TOC', 'book');
+
+/// prepare header
+if ($course->category) {
+    $navigation = '<a href="../../course/view.php?id='.$course->id.'">'.$course->shortname.'</a> ->';
+} else {
+    $navigation = '';
+}
+
+$buttons = $isteacher ? '<table cellspacing="0" cellpadding="0"><tr><td>'.update_module_button($cm->id, $course->id, $strbook).'</td>'.
+           '<td>&nbsp;</td><td>'.book_edit_button($cm->id, $course->id, $chapter->id).'</td></tr></table>'
+           : '&nbsp;';
+
+print_header( "$course->shortname: $book->name ($chapter->title)",
+              $course->fullname,
+              "$navigation <a href=\"index.php?id=$course->id\">$strbooks</a> -> $book->name",
+              '',
+              '<style type="text/css">@import url('.$CFG->wwwroot.'/mod/book/book_theme.css);</style>',
+              true,
+              $buttons,
+              navmenu($course, $cm)
+            );
+
+
+/// prepare chapter navigation icons
+$previd = null;
+$nextid = null;
+$found = 0;
+foreach ($chapters as $ch) {
+    if ($found) {
+        $nextid= $ch->id;
+        break;
+    }
+    if ($ch->id == $chapter->id) {
+        $found = 1;
+    }
+    if (!$found) {
+        $previd = $ch->id;
+    }
+}
+if ($ch == current($chapters)) {
+    $nextid = $ch->id;
+}
+$chnavigation = '';
+if ($previd) {
+    $chnavigation .= '<a title="'.get_string('navprev', 'book').'" href="view.php?id='.$cm->id.'&chapterid='.$previd.'"><img src="pix/nav_prev.gif" height="24" width="24" border="0"></img></a>';
+} else {
+    $chnavigation .= '<img src="pix/nav_prev_dis.gif" height="24" width="24" border="0"></img>';
+}
+$chnavigation .= '&nbsp;&nbsp;<img src="pix/nav_sep.gif" height="24" width="2" border="0"></img>&nbsp;&nbsp;';
+if ($nextid) {
+    $chnavigation .= '<a title="'.get_string('navnext', 'book').'" href="view.php?id='.$cm->id.'&chapterid='.$nextid.'"><img src="pix/nav_next.gif" height="24" width="24" border="0"></img></a>';
+} else {
+    $sec = '';
+    if ($section = get_record('course_sections', 'id', $cm->section)) {
+        $sec = $section->section;
+    }
+    $chnavigation .= '<a title="'.get_string('navexit', 'book').'" href="../../course/view.php?id='.$course->id.'#section-'.$sec.'"><img src="pix/nav_exit.gif" height="24" width="24" border="0"></img></a>';
+}
+
+/// prepare print icons
+if ($book->disableprinting) {
+    $printbook = '';
+    $printchapter = '';
+} else {
+    $printbook = '<a title="'.get_string('printbook', 'book').'" href="print.php?id='.$cm->id.'" target="_blank"><img src="pix/print_book.gif" height="24" width="24" border="0"></img></a>';
+    $printchapter = '<a title="'.get_string('printchapter', 'book').'" href="print.php?id='.$cm->id.'&chapterid='.$chapter->id.'" target="_blank"><img src="pix/print_chapter.gif" height="24" width="24" border="0"></img></a>';
+}
+
+// prepare $toc and $currtitle, $currsubtitle
+require('toc.php');
+
+if ($edit) {
+    $tocwidth = $CFG->book_tocwidth + 80;
+} else {
+    $tocwidth = $CFG->book_tocwidth;
+}
+
+$doimport = ($isteacher and $edit) ? '<font size="-1"> (<a href="import.php?id='.$cm->id.'">'.get_string('doimport', 'book').'</a>)</font>' : '';
+
+
+// =====================================================
+// Book display HTML code
+// =====================================================
+
+?>
+<table border="0" cellspacing="0" width="100%" valign="top" cellpadding="2">
+
+<!-- subchapter title and upper navigation row //-->
+<tr>
+    <td width="<?php echo $tocwidth ?>" valign="bottom">
+        <?php print_string('toc', 'book'); echo $doimport; ?>
+    </td>
+    <td valign="top">
+        <table border="0" cellspacing="0" width="100%" valign="top" cellpadding="0">
+        <tr>
+            <td nowrap align="left"><?php echo $printbook.'&nbsp'.$printchapter ?></td>
+            <td nowrap align="right"><?php echo $chnavigation ?></td>
+        </tr>
+        </table>
+    </td>
+</tr>
+
+<!-- toc and chapter row //-->
+<tr>
+    <td width="<?php echo $tocwidth ?>" valign="top" align="left">
+        <?php
+        print_simple_box_start('middle', '100%');
+        echo $toc;
+        print_simple_box_end();
+        if ($isteacher and $edit) {
+            echo '<font size="1"><br />';
+            helpbutton('faq', get_string('faq','book'), 'book', true, true);
+            echo '</font>';
+        }
+        ?>
+    </td>
+    <td valign="top" align="right">
+        <?php
+        print_simple_box_start('middle', '100%');
+        $content = '';
+        if (!$book->customtitles) {
+          if ($currsubtitle == '&nbsp;') {
+              $content .= '<p class="book_chapter_title">'.$currtitle.'<p>';
+          } else {
+              $content .= '<p class="book_chapter_title">'.$currtitle.'<br />'.$currsubtitle.'</p>';
+          }
+        }
+        $content .= $chapter->content;
+
+        $nocleanoption = new object();
+        $nocleanoption->noclean = true;
+        echo '<div class="book_content">';
+        echo format_text($content, FORMAT_HTML, $nocleanoption, $course->id);
+        echo '</div>';
+        print_simple_box_end();
+        /// lower navigation
+        echo '<p>'.$chnavigation.'<p>';
+        ?>
+    </td>
+</tr>
+</table>
+
+<?php
+print_footer($course);
+
+?>