示例#1
0
 public function executeAsset($request)
 {
     try {
         $controller = new Dynamics_Controller(sfDynamics::getInstance()->getConfiguration());
         $result = $controller->run($request->getParameter('name'));
         $this->response->setContentType($controller->getContentType());
         return $this->renderText($result);
     } catch (Exception $e) {
         throw new sfError404Exception($e->getMessage());
     }
 }
 /**
  * Retrieve the default javascript behavior manager.
  *
  * @param mixed $context
  * @return void
  */
 public static function getManager($context = null)
 {
     if (is_null(self::$manager)) {
         if (is_null($context)) {
             $context = sfContext::getInstance();
         }
         self::checkConfiguration($context);
         $managerClass = sfConfig::get('app_sfDynamicsPlugin_manager', 'sfDynamicsManager');
         self::$manager = new $managerClass($context);
     }
     return self::$manager;
 }
示例#3
0
 public function executeAsset($request)
 {
     try {
         $name = $this->getRequest()->getParameter('name');
         $this->forward404Unless(sfDynamicsPackageDefinition::checkIsValidPackageName($name));
         $extensionPosition = strrpos($name, '.');
         $assetExtension = substr($name, $extensionPosition + 1);
         $assetType = sfDynamics::getTypeFromExtension($assetExtension);
         $name = substr($name, 0, $extensionPosition);
         $this->package = sfDynamics::getManager()->getPackage($name);
         $this->{'pre' . ucfirst($assetType)}();
         return $this->renderText(sfDynamics::getRenderer()->getAsset($name, $this->package, $assetType, $assetExtension));
     } catch (Exception $e) {
         throw new sfError404Exception($e->getMessage());
     }
 }
 /**
  * getAsset - render assets of a given type for a package
  *
  * @param  string                              $name
  * @param  sfDynamicsAssetCollectionDefinition $package
  * @param  string                              $type
  * @return string
  */
 public function getAsset($name, sfDynamicsAssetCollectionDefinition $package, $type)
 {
     $extension = sfDynamics::getExtensionFromType($type);
     $getAssets = 'get' . ucfirst($type) . 's';
     if (count($assets = $package->{$getAssets}())) {
         $paths = $package->getPaths('/' . $extension);
         if (sfDynamicsConfig::isCacheEnabled()) {
             $cacheKey = sfDynamicsCache::generateKey($package, $type);
             $cache = sfDynamics::getCache();
             if ($cache->has($cacheKey)) {
                 if (sfDynamicsConfig::isCacheUpToDateCheckEnabled()) {
                     foreach ($assets as $asset) {
                         // this is needed to know the actual file path on disk, and to know its mtime.
                         $asset->computePath($paths);
                     }
                     if ($cache->isStillUpToDate($package, $type, $cacheKey)) {
                         $result = $cache->get($cacheKey);
                     }
                 } else {
                     $result = $cache->get($cacheKey);
                 }
             }
         }
         // still no result? let's build it!
         if (!isset($result)) {
             $result = $this->getConcatenatedAssets($package, $paths, $assets);
             $result = sfDynamicsConfig::getConcatenatedAssetFilterChainFor($type)->filter($result);
             if (sfDynamicsConfig::isCacheEnabled()) {
                 $cache->set($cacheKey, $result);
             }
         }
         return $result;
     } else {
         return '';
     }
 }
<?php

require_once dirname(__FILE__) . '/../bootstrap/unit.php';
require_once dirname(__FILE__) . '/../../lib/sfDynamics.class.php';
$testCount = 1;
class ManagerMock extends sfDynamicsManager
{
}
$t = new lime_test($testCount, new lime_output_color());
$t->comment('::getManager()');
if (!sfContext::hasInstance()) {
    require_once $_SERVER['SYMFONY'] . '/autoload/sfCoreAutoload.class.php';
    sfCoreAutoload::register();
    require_once dirname(__FILE__) . '/../fixtures/project/config/ProjectConfiguration.class.php';
    sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration('frontend', 'test', isset($debug) ? $debug : true));
    if (!sfContext::hasInstance()) {
        $t->error('A context instance is required');
        die;
    }
    $t->info('A frontend context has been initialized for tests');
}
sfConfig::set('app_sfDynamicsPlugin_manager', 'ManagerMock');
$t->isa_ok(sfDynamics::getManager(), 'ManagerMock', '::getManager() the manager class can be customized in app.yml');
示例#6
0
<?php

sfDynamics::setInstance(new sfDynamicsSymfonyAdapter($this->dispatcher));
    public function getPanelContent()
    {
        $controller = sfContext::getInstance()->getController();
        try {
            $html = '
      <style type="text/css">
        div#sfWebDebugDynamics table ul,
        div#sfWebDebugDynamics table ul li
        {
          margin: 0;
          padding: 0;
          list-style-type: dash;
        }
        div#sfWebDebugDynamics table ul
        {
          padding-left: 16px;

        }
      </style>

      <table class="sfWebDebugLogs">
        <tr>
          <td>&nbsp;</td>
          <th>Javascript items</th>
          <th>Generated javascript</th>
          <th>Stylesheet items</th>
          <th>Generated stylesheet</th>
        </tr>' . "\n";
            $line_nb = 0;
            $manager = sfDynamics::getManager();
            foreach ($manager->getPackages() as $packageName => $package) {
                $html .= '<tr>';
                $html .= '<th>' . $packageName . '</th>';
                foreach (array('Javascripts' => 'js', 'Stylesheets' => 'css') as $assetType => $extension) {
                    if ($package->{'has' . $assetType}()) {
                        $html .= '<td>';
                        $html .= '<ul>';
                        foreach ($package->{'get' . $assetType}() as $javascript) {
                            $html .= '<li>' . $javascript . '</li>';
                        }
                        $html .= '</ul>';
                        $html .= '</td>';
                        $html .= '<td>';
                        $url = $controller->genUrl(sfDynamicsRouting::uri_for($packageName, $extension));
                        $html .= sprintf('<a href="%s" target="_blank">%s</a>', $url, basename($url));
                        $html .= '</td>';
                    } else {
                        $html .= '<td colspan="2" align="center">not available</td>';
                    }
                }
                $html .= '</tr>';
            }
            $html .= '</table><br />';
        } catch (Exception $e) {
            $html = '
        <div>
          An exception occured while trying to render debug information for
          loaded packages.
          <br /><br />
          This may have happened because your current application is not ready
          to use sfDynamics. Please read the exception detail to understand the
          problem.
          <br /><br />
          <b>Check-list</b>:
          <ul>
            <li>make sure %sf_web_dir%/dynamics/ exists and is writable by your
            web-server user.</li>
            <li>make sure sfDynamicsPlugin is activated in
            %sf_root_dir%/config/ProjectConfiguration.class.php</li>
            <li>make sure sfDynamics module is enabled in your current
            application\'s settings.yml file.</li>
          </ul>
        </div>
        <br />
      ';
        }
        return '<div id="sfWebDebugDynamics">' . $html . '</div>';
    }
  </body>
</html>
END;
    $waited = <<<END
<html>
  <head>
<script type="text/javascript" src="/dynamics/foo.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="/dynamics/foo.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="/bar.css" />
    <script type="text/javascript" src="/bar.js"></script>
  </head>
  <body>
    <p>Lorem ipsum</p>
  </body>
</html>
END;
    $t->is($manager->filterContent(new sfEvent('lorem', 'event.name'), $content), $waited, '->addSfDynamicsTags() inserts tags at the beginning of <head> if position "prepend" and placeholder not found');
}
$t->comment('->getTag()');
$manager = sfDynamics::getManager();
sfWidget::setXhtml(false);
$t->is($manager->getTag('foo.js', 'javascript'), '<script type="text/javascript" src="foo.js"></script>', '->getTag() returns a "<script>" tag for the js type');
$t->is($manager->getTag('foo.css', 'stylesheet'), '<link rel="stylesheet" type="text/css" media="all" href="foo.css" >', '->getTag() returns a "<style media="screen">" tag for the css type');
sfWidget::setXhtml(true);
$t->is($manager->getTag('foo.css', 'stylesheet'), '<link rel="stylesheet" type="text/css" media="all" href="foo.css" />', '->getTag() uses the sfWidget::getXhtml() config');
try {
    $manager->getTag('foo.swf', 'swf');
    $t->fail('->getTag() throws an exception if type isn’t stylesheet or javascript');
} catch (Exception $e) {
    $t->pass('->getTag() throws an exception if type isn’t stylesheet or javascript');
}
 public function generateAssetsHtml()
 {
     $renderer = sfDynamics::getRenderer();
     $html = '';
     /* generate useable package array */
     $packages = array();
     foreach (array_keys($this->packages) as $packageName) {
         $packages[$packageName] = $this->getPackage($packageName);
     }
     foreach (array('javascript' => 'js', 'stylesheet' => 'css') as $type => $ext) {
         $assets = $this->{$type . 's'};
         if (sfDynamicsConfig::isGroupingEnabledFor($type) && sfDynamicsConfig::isSupercacheEnabled()) {
             $url = sfDynamicsRouting::supercache_for($packages, $ext);
             $renderer->generateSupercache($url, $packages, $assets, $type);
             $html .= '  ' . $this->getTag($url, $type) . "\n";
         } else {
             foreach ($assets as $asset) {
                 $url = $this->controller->genUrl(sfDynamicsRouting::uri_for($asset, $ext));
                 $html .= '  ' . $this->getTag($url, $type) . "\n";
             }
         }
     }
     return $html;
 }
 /**
  * Generate the sfDynamics html tags for a given asset type
  */
 protected function generateHtml($type, $ext)
 {
     if (!isset($this->{$type . 's'})) {
         throw new sfDynamicsException('The ' . $type . ' asset type is unknown');
     }
     $renderer = sfDynamics::getRenderer();
     $html = '';
     /* generate useable package array */
     $packages = array();
     foreach (array_keys($this->packages) as $packageName) {
         $packages[$packageName] = $this->getPackage($packageName);
     }
     $assets = $this->{$type . 's'};
     if (sfDynamicsConfig::isGroupingEnabledFor($type) && sfDynamicsConfig::isSupercacheEnabled()) {
         $url = sfDynamicsRouting::supercache_for($packages, $ext);
         $renderer->generateSupercache($url, $packages, $assets, $type);
         $url = call_user_func(array('sfDynamicsConfig', 'get' . ucfirst($ext) . 'Cdn')) . $url;
         $html .= '  ' . $this->getTag($url, $type) . "\n";
     } else {
         foreach ($assets as $asset) {
             $url = $this->controller->genUrl(sfDynamicsRouting::uri_for($asset, $ext));
             $url = call_user_func(array('sfDynamicsConfig', 'get' . ucfirst($ext) . 'Cdn')) . $url;
             $html .= '  ' . $this->getTag($url, $type) . "\n";
         }
     }
     return $html;
 }
示例#11
0
 public static function setInstance(Dynamics $instance)
 {
     self::$instance = $instance;
 }
示例#12
0
 public function execute($request)
 {
     sfDynamics::load('jquery');
 }
 public function __construct($behavior)
 {
     $this->behavior = $behavior;
     $this->configuration = sfDynamics::getManager()->getConfiguration($behavior);
 }