Overview

Namespaces

  • MOC
    • Adapter
    • Core
      • Changelog
      • Depending
      • Drive
        • Directory
        • File
      • Error
        • Register
        • Type
      • Journal
      • Proxy
      • Template
      • Xml
    • Extension
      • Excel
      • Flot
      • Mail
      • Pdf
      • Word
      • Xml
      • YUICompressor
      • Zip
    • Generic
      • Common
      • Device
        • Extension
        • Widget
    • Module
      • Database
        • Driver
      • Drive
      • Image
        • Font
      • Installer
      • Network
        • Ftp
          • Directory
          • File
          • Transport
        • Http
        • ParcelTracker
          • Carrier
      • Office
        • Chart
          • Axis
        • Document
          • Excel
            • Cell
              • Format
              • Style
                • Border
                  • Bottom
                  • Left
                  • Right
                  • Top
                • Font
            • Close
            • Page
            • Worksheet
          • Pdf
            • Close
            • Font
            • Page
              • Margin
              • Position
            • Text
          • Xml
            • Close
        • Image
        • Mail
          • Address
          • Content
      • Packer
        • Yui
        • Zip
      • Template
    • Plugin
      • Gateway
      • Repository
      • Shared
  • PHP

Classes

  • Documentation
  • mocJavaScriptHelper
  • mocStyleSheetHelper
  • MusicPlayer
  • VideoPlayer
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
 1: <?php
 2: /**
 3:  * LICENSE (BSD)
 4:  *
 5:  * Copyright (c) 2013, Gerd Christian Kunze
 6:  * All rights reserved.
 7:  *
 8:  * Redistribution and use in source and binary forms, with or without
 9:  * modification, are permitted provided that the following conditions are
10:  * met:
11:  *
12:  *  * Redistributions of source code must retain the above copyright
13:  *    notice, this list of conditions and the following disclaimer.
14:  *
15:  *  * Redistributions in binary form must reproduce the above copyright
16:  *    notice, this list of conditions and the following disclaimer in the
17:  *    documentation and/or other materials provided with the distribution.
18:  *
19:  *  * Neither the name of Gerd Christian Kunze nor the names of the
20:  *    contributors may be used to endorse or promote products derived from
21:  *    this software without specific prior written permission.
22:  *
23:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24:  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25:  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26:  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30:  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31:  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32:  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34:  *
35:  * mocJavaScriptHelper
36:  * 12.06.2013 12:55
37:  */
38: namespace MOC\Plugin\Gateway;
39: use MOC\Api;
40: use MOC\Module\Drive\Directory;
41: use MOC\Module\Drive\File;
42: 
43: /**
44:  *
45:  */
46: abstract class mocJavaScriptHelper extends \MOC\Plugin\Shared\mocJavaScriptHelper {
47: 
48:     /** @var File[] $FileList */
49:     private static $FileList = array();
50: 
51:     /**
52:      * Register a JavaScript file to be loaded
53:      *
54:      * @param File $File
55:      * @param bool $asRaw
56:      *
57:      * @return mocJavaScriptHelper
58:      */
59:     final public function Register( File $File, $asRaw = true ) {
60:         self::$FileList[] = array( $File, $asRaw );
61:         return $this;
62:     }
63: 
64:     /**
65:      * Create combined/compressed JavaScript file and return an URI-Location
66:      *
67:      * @param Directory $Directory
68:      *
69:      * @return string
70:      */
71:     final public function Build( Directory $Directory ) {
72:         $Hash = $this->HashStack();
73:         $Build = Api::Module()->Drive()->File()->Open( $Directory->GetLocation().DIRECTORY_SEPARATOR.$Hash.'.js' );
74:         if( !$Build->Exists() ) {
75:             $Yui = Api::Module()->Packer()->Yui()->Script();
76:             foreach( self::$FileList as $Job ) {
77:                 $Yui->AddFile( $Job[0], $Job[1] );
78:             }
79:             $Yui->SaveAs( $Build );
80:         }
81:         self::$FileList = array();
82:         return $Build->GetUrl();
83:     }
84: 
85:     /**
86:      * Create JavaScript Library-Hash
87:      *
88:      * @return string
89:      */
90:     private function HashStack() {
91:         $HashStack = array();
92:         /** @var File[] $File */
93:         foreach( self::$FileList as $File ) {
94:             array_push( $HashStack, $File[0]->GetHash() );
95:         }
96:         return sha1( implode( '-', $HashStack ) );
97:     }
98: }
99: 
API documentation generated by ApiGen 2.8.0