Dokument Google Docs w Treści artykułu Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Jan Jackowicz-Korczyński   
czwartek, 19 listopada 2009 20:48

Dodatek do wklejania dokumenty GoiogleDocs do tresci artykuł można pobrać pod adresem: http://joomlacode.org/gf/project/googledocs/frs/

Znajdują się tam dwa dodatki: sam ,,wklejacz'' dokumentu (GoogleDocs_Content_Plugin) oraz rozszerzenie edytorów Joomla dla tego dodatku (GoogleDocs_Editor_Plugin).

Oba dodatki tzreba zainstalować i opublikować.

Dodatek do edytora uzupełnia listę rozszeczeń o link GoogleDocs

Funkca ta uruchamia odpowiedni porsty FORMULARZ:

 

Uwaga!

Formularz wstawia do edytora KOD rozszerzenia. Dopiero przy wyświetlaniu artykułu od frontonu generowany jest w miejsce tego kodu dokument GoogleDocs.

 

Dodatek ten niestety nie  spełnia standardów wielojęzyczności i nie posiada osobnych plikó językowych. Stałe komunikaty są w pisane w wersji angielskiej bezpośrednio w kod dodatku.

Jęśli chcesz uzyskać polską wersję dodatku musisz zmodyfikować plik: plugins/editors/editors-xtd/googledocs_form.php

i zamienić w tym pliku komunikaty angielskie na Polskie (uwaga w standardzie kodowanie znakó UTF8)

 

Poniżej plik ten w wersji polskojęycznej:


001.    mark( 'afterLoad' ) : null; // CREATE THE APPLICATION $app = JRequest::getString('app', 'site'); $app = $app == 'site' ? 'site' : ($app == 'administrator' ? 'administrator' : 'site'); $app_path = $app == 'site' ? '../..' : '../../administrator'; $mainframe =& JFactory::getApplication($app); $doc =& JFactory::getDocument(); /** @var jlanguage $lang */ $lang =& JFactory::getLanguage(); $lang->load('plg_editors-xtd_googledocs', realpath(JPATH_BASE.DS.'administrator')); JHTML::_('behavior.mootools'); jimport( 'joomla.plugin.plugin' ) ; jimport( 'joomla.plugin.helper' ) ; $plugin = & JPluginHelper::getPlugin( 'content', 'googledocs' ) ; $pluginParams = new JParameter( $plugin->params ) ; $doctypes[] = JHTML::_('select.option', 'presentation', JText::_( 'Prezentacje' )); $doctypes[] = JHTML::_('select.option', 'spreadsheet', JText::_( 'Arkusz kalkulacyjny' )); $doctypes[] = JHTML::_('select.option', 'document' , JText::_( 'Doc' )); $doctypelist = JHTML::_('select.genericlist', $doctypes, 'doctype', 'onchange="doGDocRequest()"', 'value', 'text', $pluginParams->get('default_type') ); $sizes[] = JHTML::_('select.option', 's', JText::_( 'mały' )); $sizes[] = JHTML::_('select.option', 'm', JText::_( 'średni' )); $sizes[] = JHTML::_('select.option', 'l' , JText::_( 'duży' )); $sizelist = JHTML::_('select.genericlist', $sizes, 'size', null, 'value', 'text', $pluginParams->get('default_size') ); $frameborderlist = JHTML::_('select.integerlist', 0, 4, 1, 'frameborder', null, $pluginParams->get('frameborder')); $juri = JURI::getInstance(); ?> <link href="/%3C?php%20echo%20$app_path%20?%3E/templates/%3C?php%20echo%20$mainframe-%3EgetTemplate%28%29%20?%3E/css/template.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/../../media/system/js/mootools.js"></script><script type="text/javascript" src="/<?php echo $juri->getScheme() ?>://www.google.com/jsapi"></script><script type="text/javascript">
002.// Load the Google data JavaScript client library
003.google.load("gdata", "1.x");
004.// Set init() to be called after JavaScript libraries load
005.google.setOnLoadCallback(init);
006. 
007.// Object for storing constants and global variables
008.var gDocListAPI = {
009.CURRENT_DOCUMENT: null,
010.SELECTED_DOCTYPE: null,
011.AUTHENTICATION_URL: '<?php echo $juri->getScheme() ?>://docs.google.com/feeds/documents',
012.PERSONAL_DOC_LIST_URL: '<?php echo $juri->getScheme() ?>://docs.google.com/feeds/documents/private/full',
013. 
014.AUTHENTICATION_LINK: 'authenticationLink',
015.MAIN_CONTENT_TABLE: 'mainContentTable',
016.STATUS_CONTAINER: 'statusContainer',
017.DOCTYPE_SELECT: 'doctype',
018.DOCUMENT_SELECT: 'document_entries'
019.};
020. 
021./**
022.* Onload handler: calls two initialization subroutines
023.*/
024.function init() {
025.// Create service object for accessing private feeds using AuthSub
026.gDocListAPI.service =
027.new google.gdata.client.GoogleService("writely", "JoomlaPlugin-GoogleDocEmbed");
028.initializeUI();
029.}
030./**
031.* Resets interface and retrieves user's private blog feed if user is
032.* signed in
033.*/
034.function initializeUI() {
035.var authenticationLink = $(gDocListAPI.AUTHENTICATION_LINK);
036. 
037.$("authenticationDiv").setStyle( "display", "" );
038. 
039.if (google.accounts.user.checkLogin(gDocListAPI.AUTHENTICATION_URL)) {
040.if( opener ) { opener.initializeUI(); window.close(); }
041.$("document_entries_row").setStyle( "display", "" );
042.doGDocRequest();
043.authenticationLink.setHTML("<?php echo JText::_('Sign out', true) ?>");
044.authenticationLink.onclick = signOut;
045.} else {
046.$("document_entries_row").setStyle( "display", "none" );
047.$(gDocListAPI.STATUS_CONTAINER).setStyle("display", "none");
048.authenticationLink.setHTML("<?php echo JText::_('Sign in', true) ?>");
049.authenticationLink.onclick = signIn;
050.}
051. 
052.}
053./**
054.* Function to retrieve the document feed from Google
055.* Automatically filters by selected Document Type
056.*/
057.function doGDocRequest() {
058.if (google.accounts.user.checkLogin(gDocListAPI.AUTHENTICATION_URL)) {
059.$(gDocListAPI.DOCUMENT_SELECT).setStyle("display", "none");
060.$(gDocListAPI.STATUS_CONTAINER).setStyle("display", "");
061.gDocListAPI.service.getFeed(gDocListAPI.PERSONAL_DOC_LIST_URL + "/-/" + $(gDocListAPI.DOCTYPE_SELECT).getValue(),
062.getDocFeedHandler, errorHandler, google.gdata.atom.Feed);
063.}
064.}
065./**
066.* Requests an AuthSub token for interaction with the Blogger service
067.*/
068.function signIn() {
069.var token = google.accounts.user.checkLogin(gDocListAPI.AUTHENTICATION_URL);
070.if( !token ) {
071.var authSubWin = window.open("<?php echo $juri->getScheme() ?>://www.google.com/accounts/AuthSubRequestJS?session=1&scope=http://docs.google.com/feeds/documents&;next=<?php echo urlencode( JURI::base() ."googledocs_form.php?app=site&e_name=text" ) ?>", "authsub", "width=600,height=400,scrollbars" );
072.authSubWin.onclose = initializeUI;
073.}
074.}
075. 
076./**
077.* Revokes the AuthSub token and resets the interface
078.*/
079.function signOut() {
080.google.accounts.user.logout();
081.initializeUI();
082.}
083. 
084./**
085.* Called after successful retrieval of document feed; populates drop-down
086.* menu with titles of user's documents
087.*
088.* @param {Object} docFeedRoot Feed object containing collection of
089.* document entries
090.*/
091.function getDocFeedHandler(docFeedRoot) {
092.$(gDocListAPI.STATUS_CONTAINER).setStyle("display", "none");
093.$(gDocListAPI.DOCUMENT_SELECT).setStyle("display", "block");
094.var docArr = docFeedRoot.feed.getEntries();
095.var documentSelect = $(gDocListAPI.DOCUMENT_SELECT);
096. 
097.for (var i = 0; i < docArr.length; i++) {
098.var newOption = document.createElement("option");
099.var docTitle = docArr[i].getTitle().getText();
100.linkArr = docArr[i].getLinks();
101.var docLocation = linkArr[0].getHref();
102. 
103.newOption.value = docLocation;
104.newOption.innerHTML = docTitle;
105.documentSelect.appendChild(newOption);
106.}
107. 
108.}
109. 
110./**
111.* Called if Google Docs service is unable to retrieve a feed or insert an
112.* entry properly; creates a popup alert notifying user of error of cause
113.*
114.* @param {Object} e Object containing error information
115.*/
116.function errorHandler(e) {
117.alert(e.cause.status ? e.message + " (" + e.cause.status + ")" : e.message);
118.}
119.function getDocId( link ) {
120.lastPos = link.indexOf("&") > 10 ? null : link.indexOf("&");
121.return link.substring( link.indexOf("=")+1 );
122.}
123.function setDocId( id ) {
124.$("docid").value = id;
125.}
126.function insertGoogleDoc(editor) {
127.// Get the pagebreak title
128.var docid = $("docid").getValue();
129.if( docid == "" ) {
130.alert( "<?php echo JText::_( 'Document ID is required', true ); ?>" );
131.$("docid").focus();
132.return false;
133.}
134.var type = $("doctype").getValue();
135.if( type == "document" ) type = "doc";
136.var size = $("size").getValue();
137.var frameborder = $("frameborder").getValue();
138.var width = $("width").getValue();
139.var height = $("height").getValue();
140. 
141.if (width != '') {
142.width = " width=\""+width+"\" ";
143.}
144.if (height != '') {
145.height = " height=\""+height+"\" ";
146.}
147. 
148.var tag = " {GoogleDoc docid=\""+docid+"\" type=\"" + type + "\" size=\"" + size + "\" frameborder=\"" + frameborder + "\""+ width + height + "} ";
149. 
150.window.parent.jInsertEditorText(tag, "<?php echo preg_replace( '#[^A-Z0-9\-\_\[\]]#i', '', JRequest::getVar('e_name') ); ?>");
151.window.parent.document.getElementById('sbox-window').close();
152.return false;
153.}
154./**
155.* Debug Function, that works like print_r for Objects in Javascript
156.*/
157.function var_dump(obj) {
158.var vartext = "";
159.for (var prop in obj) {
160.if( isNaN( prop.toString() )) {
161.vartext += "\t->"+prop+" = "+ eval( "obj."+prop.toString()) +"\n";
162.}
163.}
164.if(typeof obj == "object") {
165.return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "") + "\n" + vartext;
166.} else {
167.return "Type: "+typeof(obj)+"\n" + vartext;
168.}
169.}
170.</script>
171. 
172.    <img align="left" alt="lock" src="/../../administrator/images/checked_out.png" />
173.<h1>
174.       <img align="middle" alt="GoogleDocs" src="/googledocs.gif" />   Wstaw Dokument GoogleDocs</h1>
175.<form>
176.    <table class="admintable" id="mainContentTable" style="margin-left: 15px; width: 90%;">
177.        <tbody>
178.            <tr>
179.                <td align="right" class="key" width="30%">
180.                     </td>
181.                <td width="70%">
182.                     </td>
183.            </tr>
184.            <tr id="document_entries_row" style="display: none;">
185.                <td align="right" class="key">
186.                     </td>
187.                <td>
188.                    <select gtbfieldid="525" id="document_entries" name="document_entries" onchange="setDocId(getDocId(this.getValue()))"><option value=""></option></select> <img align="middle" alt="-*-" src="/googledocs_indicator.gif" /> </td>
189.            </tr>
190.            <tr>
191.                <td align="right" class="key">
192.                     </td>
193.                <td>
194.                    <input class="inputbox" gtbfieldid="526" id="docid" name="docid" type="text" /></td>
195.            </tr>
196.            <tr>
197.                <td align="right" class="key">
198.                     </td>
199.                <td>
200.                     </td>
201.            </tr>
202.            <tr>
203.                <td align="right" class="key">
204.                     </td>
205.                <td>
206.                    <input class="inputbox" gtbfieldid="527" id="height" name="height" size="5" type="text" value="<?php echo $pluginParams->get('iframe_height_custom') ?>" /> x <input class="inputbox" gtbfieldid="528" id="width" name="width" size="5" type="text" value="<?php echo $pluginParams->get('iframe_width_custom') ?>" /></td>
207.            </tr>
208.            <tr>
209.                <td align="right" class="key">
210.                     </td>
211.                <td>
212.                     </td>
213.            </tr>
214.            <tr>
215.                <td colspan="2">
216.                     
217. 
218.                     
219. 
220.                    <input class="button" onclick="insertGoogleDoc();" type="button" value="<?php echo JText::_( 'Wstaw kod Joomla generujący wyświeltanie dokumentu' ); ?>" /></td>
221.            </tr>
222.        </tbody>
223.    </table>
224.</form>
225. 
226.