Bläddra i källkod

add famfamfam icons, add pager (from the symfony-project), add CRUD prototype

Thomas 14 år sedan
förälder
incheckning
3d0cc1f8e7
100 ändrade filer med 571 tillägg och 0 borttagningar
  1. 17 0
      BaseApplicationBundle.php
  2. 371 0
      Controller/CRUDController.php
  3. 80 0
      DependencyInjection/BaseApplicationExtension.php
  4. 35 0
      Form/Generator.php
  5. 44 0
      LICENSE
  6. 24 0
      README.md
  7. BIN
      Resources/.DS_Store
  8. 0 0
      Resources/config/routing/base_application.xml
  9. BIN
      Resources/public/.DS_Store
  10. BIN
      Resources/public/famfamfam/accept.png
  11. BIN
      Resources/public/famfamfam/add.png
  12. BIN
      Resources/public/famfamfam/anchor.png
  13. BIN
      Resources/public/famfamfam/application.png
  14. BIN
      Resources/public/famfamfam/application_add.png
  15. BIN
      Resources/public/famfamfam/application_cascade.png
  16. BIN
      Resources/public/famfamfam/application_delete.png
  17. BIN
      Resources/public/famfamfam/application_double.png
  18. BIN
      Resources/public/famfamfam/application_edit.png
  19. BIN
      Resources/public/famfamfam/application_error.png
  20. BIN
      Resources/public/famfamfam/application_form.png
  21. BIN
      Resources/public/famfamfam/application_form_add.png
  22. BIN
      Resources/public/famfamfam/application_form_delete.png
  23. BIN
      Resources/public/famfamfam/application_form_edit.png
  24. BIN
      Resources/public/famfamfam/application_form_magnify.png
  25. BIN
      Resources/public/famfamfam/application_get.png
  26. BIN
      Resources/public/famfamfam/application_go.png
  27. BIN
      Resources/public/famfamfam/application_home.png
  28. BIN
      Resources/public/famfamfam/application_key.png
  29. BIN
      Resources/public/famfamfam/application_lightning.png
  30. BIN
      Resources/public/famfamfam/application_link.png
  31. BIN
      Resources/public/famfamfam/application_osx.png
  32. BIN
      Resources/public/famfamfam/application_osx_terminal.png
  33. BIN
      Resources/public/famfamfam/application_put.png
  34. BIN
      Resources/public/famfamfam/application_side_boxes.png
  35. BIN
      Resources/public/famfamfam/application_side_contract.png
  36. BIN
      Resources/public/famfamfam/application_side_expand.png
  37. BIN
      Resources/public/famfamfam/application_side_list.png
  38. BIN
      Resources/public/famfamfam/application_side_tree.png
  39. BIN
      Resources/public/famfamfam/application_split.png
  40. BIN
      Resources/public/famfamfam/application_tile_horizontal.png
  41. BIN
      Resources/public/famfamfam/application_tile_vertical.png
  42. BIN
      Resources/public/famfamfam/application_view_columns.png
  43. BIN
      Resources/public/famfamfam/application_view_detail.png
  44. BIN
      Resources/public/famfamfam/application_view_gallery.png
  45. BIN
      Resources/public/famfamfam/application_view_icons.png
  46. BIN
      Resources/public/famfamfam/application_view_list.png
  47. BIN
      Resources/public/famfamfam/application_view_tile.png
  48. BIN
      Resources/public/famfamfam/application_xp.png
  49. BIN
      Resources/public/famfamfam/application_xp_terminal.png
  50. BIN
      Resources/public/famfamfam/arrow_branch.png
  51. BIN
      Resources/public/famfamfam/arrow_divide.png
  52. BIN
      Resources/public/famfamfam/arrow_down.png
  53. BIN
      Resources/public/famfamfam/arrow_in.png
  54. BIN
      Resources/public/famfamfam/arrow_inout.png
  55. BIN
      Resources/public/famfamfam/arrow_join.png
  56. BIN
      Resources/public/famfamfam/arrow_left.png
  57. BIN
      Resources/public/famfamfam/arrow_merge.png
  58. BIN
      Resources/public/famfamfam/arrow_out.png
  59. BIN
      Resources/public/famfamfam/arrow_redo.png
  60. BIN
      Resources/public/famfamfam/arrow_refresh.png
  61. BIN
      Resources/public/famfamfam/arrow_refresh_small.png
  62. BIN
      Resources/public/famfamfam/arrow_right.png
  63. BIN
      Resources/public/famfamfam/arrow_rotate_anticlockwise.png
  64. BIN
      Resources/public/famfamfam/arrow_rotate_clockwise.png
  65. BIN
      Resources/public/famfamfam/arrow_switch.png
  66. BIN
      Resources/public/famfamfam/arrow_turn_left.png
  67. BIN
      Resources/public/famfamfam/arrow_turn_right.png
  68. BIN
      Resources/public/famfamfam/arrow_undo.png
  69. BIN
      Resources/public/famfamfam/arrow_up.png
  70. BIN
      Resources/public/famfamfam/asterisk_orange.png
  71. BIN
      Resources/public/famfamfam/asterisk_yellow.png
  72. BIN
      Resources/public/famfamfam/attach.png
  73. BIN
      Resources/public/famfamfam/award_star_add.png
  74. BIN
      Resources/public/famfamfam/award_star_bronze_1.png
  75. BIN
      Resources/public/famfamfam/award_star_bronze_2.png
  76. BIN
      Resources/public/famfamfam/award_star_bronze_3.png
  77. BIN
      Resources/public/famfamfam/award_star_delete.png
  78. BIN
      Resources/public/famfamfam/award_star_gold_1.png
  79. BIN
      Resources/public/famfamfam/award_star_gold_2.png
  80. BIN
      Resources/public/famfamfam/award_star_gold_3.png
  81. BIN
      Resources/public/famfamfam/award_star_silver_1.png
  82. BIN
      Resources/public/famfamfam/award_star_silver_2.png
  83. BIN
      Resources/public/famfamfam/award_star_silver_3.png
  84. BIN
      Resources/public/famfamfam/basket.png
  85. BIN
      Resources/public/famfamfam/basket_add.png
  86. BIN
      Resources/public/famfamfam/basket_delete.png
  87. BIN
      Resources/public/famfamfam/basket_edit.png
  88. BIN
      Resources/public/famfamfam/basket_error.png
  89. BIN
      Resources/public/famfamfam/basket_go.png
  90. BIN
      Resources/public/famfamfam/basket_put.png
  91. BIN
      Resources/public/famfamfam/basket_remove.png
  92. BIN
      Resources/public/famfamfam/bell.png
  93. BIN
      Resources/public/famfamfam/bell_add.png
  94. BIN
      Resources/public/famfamfam/bell_delete.png
  95. BIN
      Resources/public/famfamfam/bell_error.png
  96. BIN
      Resources/public/famfamfam/bell_go.png
  97. BIN
      Resources/public/famfamfam/bell_link.png
  98. BIN
      Resources/public/famfamfam/bin.png
  99. BIN
      Resources/public/famfamfam/bin_closed.png
  100. 0 0
      Resources/public/famfamfam/bin_empty.png

+ 17 - 0
BaseApplicationBundle.php

@@ -0,0 +1,17 @@
+<?php
+/*
+ * This file is part of the Sonata project.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Bundle\BaseApplicationBundle;
+
+use Symfony\Component\HttpKernel\Bundle\Bundle;
+
+class BaseApplicationBundle extends Bundle {
+
+}

+ 371 - 0
Controller/CRUDController.php

@@ -0,0 +1,371 @@
+<?php
+
+/*
+ * This file is part of the Sonata package.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Bundle\BaseApplicationBundle\Controller;
+
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+
+use Symfony\Component\Form\Form;
+
+
+use Bundle\BaseApplicationBundle\Tool\DoctrinePager as Pager;
+
+class CRUDController extends Controller
+{
+    protected $class;
+
+    protected $list_fields = false;
+
+    protected $form_fields = false;
+
+    protected $base_route = '';
+
+    protected $base_controller_name;
+
+    public function getClass()
+    {
+        return $this->class;
+    }
+
+    public function getEntityManager()
+    {
+        return $this->get('doctrine.orm.default_entity_manager');
+    }
+    
+    public function getClassMetaData()
+    {
+        $em             = $this->getEntityManager();
+
+        return $em->getClassMetaData($this->getClass());
+    }
+
+    public function getListQueryBuilder()
+    {
+        $em             = $this->getEntityManager();
+        $repository     = $em->getRepository($this->getClass());
+
+        $query_buidler = $repository
+            ->createQueryBuilder('c');
+
+        return $query_buidler;
+    }
+
+    public function getUrls()
+    {
+        return array(
+            'list' => array(
+                'url'       => $this->base_route.'_list',
+                'params'    => array(),
+            ),
+            'create' => array(
+                'url'       => $this->base_route.'_create',
+                'params'    => array(),
+            ),
+            'update' => array(
+                'url'       => $this->base_route.'_update',
+                'params'    => array()
+            ),
+            'delete' => array(
+                'url'       => $this->base_route.'_delete',
+                'params'    => array()
+            ),
+            'edit'   => array(
+                'url'       => $this->base_route.'_edit',
+                'params'    => array()
+            )
+        );
+    }
+
+    public function getUrl($name)
+    {
+        $urls = $this->getUrls();
+
+        if(!isset($urls[$name])) {
+            return false;
+        }
+        
+        return $urls[$name];
+    }
+
+    public function listAction()
+    {
+
+        $pager = new Pager($this->getClass());
+
+        $url = $this->getUrl('list');
+
+        $pager->setRouter($this->get('router'));
+        $pager->setRoute($url['url']);
+
+        $pager->setQueryBuilder($this->getListQueryBuilder());
+        $pager->setPage($this->get('request')->get('page', 1));
+        $pager->init();
+
+        return $this->render($this->getListTemplate(), array(
+            'pager'             => $pager,
+            'fields'            => $this->getListFields(),
+            'class_meta_data'   => $this->getClassMetaData(),
+            'urls'              => $this->getUrls()
+        ));
+
+    }
+
+    public function getListTemplate()
+    {
+        return 'BaseApplicationBundle:CRUD:list.twig';
+    }
+
+    public function getEditTemplate()
+    {
+        return 'BaseApplicationBundle:CRUD:edit.twig';
+    }
+
+    public function getReflectionFields()
+    {
+        return $this->getClassMetaData()->reflFields;
+    }
+
+    /**
+     * make sure the base field are set in the correct format
+     *
+     * @param  $selected_fields
+     * @return array
+     */
+    public function getBaseFields($selected_fields)
+    {
+        // if nothing is defined we display all fields
+        if(!$selected_fields) {
+            $selected_fields = array_keys($this->getClassMetaData()->reflFields);
+        }
+
+        $metadata = $this->getClassMetaData();
+        
+        // make sure we works with array
+        $fields = array();
+        foreach($selected_fields as $name => $options) {
+            if(is_array($options)) {
+                $fields[$name] = $options;
+            } else {
+                $fields[$options] = array();
+                $name = $options;
+            }
+
+            if(isset($metadata->fieldMappings[$name])) {
+                $fields[$name] = array_merge(
+                    $metadata->fieldMappings[$name],
+                    $fields[$name]
+                );
+            }
+
+            if(isset($metadata->reflFields[$name])) {
+                $fields[$name]['reflection']  =& $metadata->reflFields[$name];
+            }
+        }
+
+        return $fields;
+    }
+
+    public function getFormFields()
+    {
+        $this->form_fields = $this->getBaseFields($this->form_fields);
+
+        foreach($this->form_fields as $name => $options) {
+            if(!isset($this->form_fields[$name]['template'])) {
+                $this->form_fields[$name]['template'] = sprintf('BaseApplicationBundle:CRUD:edit_%s.twig', $this->form_fields[$name]['type']);
+            }
+
+            if(isset($this->form_fields[$name]['id'])) {
+                unset($this->form_fields[$name]);
+            }
+        }
+
+        return $this->form_fields;
+    }
+
+    public function getListFields()
+    {
+        
+        $this->list_fields = $this->getBaseFields($this->list_fields);
+
+        foreach($this->list_fields as $name => $options) {
+            if(!isset($this->list_fields[$name]['type'])) {
+                $this->list_fields[$name]['type'] = 'string';
+            }
+
+            if(!isset($this->list_fields[$name]['template'])) {
+                $this->list_fields[$name]['template'] = sprintf('BaseApplicationBundle:CRUD:list_%s.twig', $this->list_fields[$name]['type']);
+            }
+
+            if(isset($this->list_fields[$name]['id'])) {
+                $this->list_fields[$name]['template'] = 'BaseApplicationBundle:CRUD:list_identifier.twig';
+            }
+        }
+
+        return $this->list_fields;
+    }
+
+    public function deleteAction($id)
+    {
+
+    }
+
+    public function editAction($id)
+    {
+
+        $this->get('session')->start();
+
+        $fields = $this->getFormFields();
+
+        if($id instanceof Form) {
+            $object = $id->getData();
+            $form   = $id;
+        } else {
+            $object = $this->get('doctrine.orm.default_entity_manager')->find($this->getClass(), $id);
+
+            if(!$object) {
+                throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id));
+            }
+
+            $form   = $this->getForm($object, $fields);
+        }
+
+        return $this->render($this->getEditTemplate(), array(
+            'form'   => $form,
+            'object' => $object,
+            'fields' => $fields,
+            'urls'   => $this->getUrls()
+        ));
+    }
+
+    public function getForm($object, $fields)
+    {
+
+        $form = new Form('data', $object, $this->get('validator'));
+
+        foreach($fields as $name => $description) {
+
+            switch($description['type']) {
+                case 'string':
+                    $field = new \Symfony\Component\Form\TextField($name);
+                    break;
+
+                case 'text':
+                    $field = new \Symfony\Component\Form\TextareaField($name);
+                    break;
+
+                case 'boolean':
+                    $field = new \Symfony\Component\Form\CheckboxField($name);
+                    break;
+
+                case 'integer':
+                    $field = new \Symfony\Component\Form\IntegerField($name);
+                    break;
+
+                case 'decimal':
+                    $field = new \Symfony\Component\Form\NumberField($name);
+                    break;
+
+                case 'datetime':
+                    $field = new \Symfony\Component\Form\DateTimeField($name);
+                    break;
+
+                case 'date':
+                    $field = new \Symfony\Component\Form\DateField($name);
+                    break;
+
+                case 'array':
+                    $field = new \Symfony\Component\Form\FieldGroup($name);
+
+                    $values = $description['reflection']->getValue($object);
+
+                    foreach((array)$values as $k => $v) {
+                        $field->add(new \Symfony\Component\Form\TextField($k));
+                    }
+            }
+
+            $form->add($field);
+
+        }
+
+        return $form;
+    }
+
+    public function updateAction()
+    {
+
+        $this->get('session')->start();
+
+        if($this->get('request')->getMethod() != 'POST') {
+           throw new \RuntimeException('invalid request type, POST expected');
+        }
+
+        $id = $this->get('request')->get('id');
+
+        if(is_numeric($id)) {
+            $object = $this->get('doctrine.orm.default_entity_manager')->find($this->getClass(), $id);
+
+            if(!$object) {
+                throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id));
+            }
+
+            $action = 'edit';
+        } else {
+            $object = new $this->getClass();
+            $action = 'create';
+        }
+
+        $fields = $this->getFormFields();
+        $form   = $this->getForm($object, $fields);
+
+        $form->bind($this->get('request')->get('data'));
+
+        if($form->isValid()) {
+
+            $this->getEntityManager()->persist($object);
+            $this->getEntityManager()->flush($object);
+
+            // redirect to edit mode
+            $url = $this->getUrl('edit');
+
+            return $this->redirect($this->generateUrl($url['url'], array('id' => $object->getId())));
+        }
+
+        return $this->forward(sprintf('%s:%s', $this->getBaseControllerName(), $action), array(
+            'id' => $form
+        ));
+    }
+
+    public function createAction()
+    {
+
+    }
+
+    public function setBaseControllerName($base_controller_name)
+    {
+        $this->base_controller_name = $base_controller_name;
+    }
+
+    public function getBaseControllerName()
+    {
+        return $this->base_controller_name;
+    }
+
+    public function setBaseRoute($base_route)
+    {
+        $this->base_route = $base_route;
+    }
+
+    public function getBaseRoute()
+    {
+        return $this->base_route;
+    }
+}

+ 80 - 0
DependencyInjection/BaseApplicationExtension.php

@@ -0,0 +1,80 @@
+<?php
+/*
+ * This file is part of the Sonata project.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+
+namespace Bundle\BaseApplicationBundle\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\DependencyInjection\Resource\FileResource;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\Extension\Extension;
+
+use Symfony\Component\Finder\Finder;
+
+/**
+ * BaseApplicationExtension
+ *
+ *
+ * @author     Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ */
+class BaseApplicationExtension extends Extension
+{
+
+    /**
+     * Loads the url shortener configuration.
+     *
+     * @param array            $config    An array of configuration settings
+     * @param ContainerBuilder $container A ContainerBuilder instance
+     */
+    public function configLoad($config, ContainerBuilder $container)
+    {
+
+        // register the twig extension
+        $container
+            ->register('twig.extension.base_application', 'Bundle\BaseApplicationBundle\Twig\Extension\BaseApplicationExtension')
+            ->addMethodCall('setTemplating', array(new Reference('templating')))
+            ->addTag('twig.extension');
+
+        // register the form generator
+//        $definition = new Definition($config['generator']['class']);
+//
+//        foreach((array)$config['generator']['definitions'] as $name => $definition) {
+//            $definition->addMethodCall('addTypes', array($name, $definition));
+//        }
+//
+//        $container->setDefinition('base_appliction.form.generator', $definition);
+
+    }
+
+    /**
+     * Returns the base path for the XSD files.
+     *
+     * @return string The XSD base path
+     */
+    public function getXsdValidationBasePath()
+    {
+
+        return __DIR__.'/../Resources/config/schema';
+    }
+
+    public function getNamespace()
+    {
+
+        return 'http://www.sonata-project.org/schema/dic/base-application';
+    }
+
+    public function getAlias()
+    {
+
+        return "base_application";
+    }
+}

+ 35 - 0
Form/Generator.php

@@ -0,0 +1,35 @@
+<?php
+/*
+ * This file is part of the Sonata project.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Bundle\BaseApplicationBundle\Form;
+
+use Symfony\Component\HttpKernel\Bundle\Bundle;
+
+class Generator
+{
+
+    protected $types = array();
+
+
+    public function setTypes($types)
+    {
+        $this->types = $types;
+    }
+
+    public function getTypes()
+    {
+        return $this->types;
+    }
+
+    public function addType($type, $definition)
+    {
+        $this->types[$type] = $definition;
+    }
+}

+ 44 - 0
LICENSE

@@ -0,0 +1,44 @@
+The MIT License
+
+Copyright (c) 2010 thomas.rabaix@sonata-project.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+Silk icon set 1.3
+_________________________________________
+Mark James
+http://www.famfamfam.com/lab/icons/silk/
+_________________________________________
+
+This work is licensed under a
+Creative Commons Attribution 2.5 License.
+[ http://creativecommons.org/licenses/by/2.5/ ]
+
+This means you may use it for any purpose,
+and make any changes you like.
+All I ask is that you include a link back
+to this page in your credits.
+
+Are you using this icon set? Send me an email
+(including a link or picture if available) to
+mjames@gmail.com
+
+Any other questions about this icon set please
+contact mjames@gmail.com

+ 24 - 0
README.md

@@ -0,0 +1,24 @@
+Prototype to easily create uniform backend application
+
+## Installation
+
+### Add BaseApplicationBundle to your src/Bundle dir
+
+    git submodule add git@github.com:sonata-project/BaseApplicationBundle.git src/Bundle/BaseApplicationBundle
+
+### Add EasyExtendsBundle to your application kernel
+
+    // app/AppKernel.php
+    public function registerBundles()
+    {
+        return array(
+            // ...
+            new Bundle\BaseApplicationBundle\BaseApplicationBundle(),
+            // ...
+        );
+    }
+
+
+### Add this line into your config.yml file 
+
+    base_application.config: ~

BIN
Resources/.DS_Store


README → Resources/config/routing/base_application.xml


BIN
Resources/public/.DS_Store


BIN
Resources/public/famfamfam/accept.png


BIN
Resources/public/famfamfam/add.png


BIN
Resources/public/famfamfam/anchor.png


BIN
Resources/public/famfamfam/application.png


BIN
Resources/public/famfamfam/application_add.png


BIN
Resources/public/famfamfam/application_cascade.png


BIN
Resources/public/famfamfam/application_delete.png


BIN
Resources/public/famfamfam/application_double.png


BIN
Resources/public/famfamfam/application_edit.png


BIN
Resources/public/famfamfam/application_error.png


BIN
Resources/public/famfamfam/application_form.png


BIN
Resources/public/famfamfam/application_form_add.png


BIN
Resources/public/famfamfam/application_form_delete.png


BIN
Resources/public/famfamfam/application_form_edit.png


BIN
Resources/public/famfamfam/application_form_magnify.png


BIN
Resources/public/famfamfam/application_get.png


BIN
Resources/public/famfamfam/application_go.png


BIN
Resources/public/famfamfam/application_home.png


BIN
Resources/public/famfamfam/application_key.png


BIN
Resources/public/famfamfam/application_lightning.png


BIN
Resources/public/famfamfam/application_link.png


BIN
Resources/public/famfamfam/application_osx.png


BIN
Resources/public/famfamfam/application_osx_terminal.png


BIN
Resources/public/famfamfam/application_put.png


BIN
Resources/public/famfamfam/application_side_boxes.png


BIN
Resources/public/famfamfam/application_side_contract.png


BIN
Resources/public/famfamfam/application_side_expand.png


BIN
Resources/public/famfamfam/application_side_list.png


BIN
Resources/public/famfamfam/application_side_tree.png


BIN
Resources/public/famfamfam/application_split.png


BIN
Resources/public/famfamfam/application_tile_horizontal.png


BIN
Resources/public/famfamfam/application_tile_vertical.png


BIN
Resources/public/famfamfam/application_view_columns.png


BIN
Resources/public/famfamfam/application_view_detail.png


BIN
Resources/public/famfamfam/application_view_gallery.png


BIN
Resources/public/famfamfam/application_view_icons.png


BIN
Resources/public/famfamfam/application_view_list.png


BIN
Resources/public/famfamfam/application_view_tile.png


BIN
Resources/public/famfamfam/application_xp.png


BIN
Resources/public/famfamfam/application_xp_terminal.png


BIN
Resources/public/famfamfam/arrow_branch.png


BIN
Resources/public/famfamfam/arrow_divide.png


BIN
Resources/public/famfamfam/arrow_down.png


BIN
Resources/public/famfamfam/arrow_in.png


BIN
Resources/public/famfamfam/arrow_inout.png


BIN
Resources/public/famfamfam/arrow_join.png


BIN
Resources/public/famfamfam/arrow_left.png


BIN
Resources/public/famfamfam/arrow_merge.png


BIN
Resources/public/famfamfam/arrow_out.png


BIN
Resources/public/famfamfam/arrow_redo.png


BIN
Resources/public/famfamfam/arrow_refresh.png


BIN
Resources/public/famfamfam/arrow_refresh_small.png


BIN
Resources/public/famfamfam/arrow_right.png


BIN
Resources/public/famfamfam/arrow_rotate_anticlockwise.png


BIN
Resources/public/famfamfam/arrow_rotate_clockwise.png


BIN
Resources/public/famfamfam/arrow_switch.png


BIN
Resources/public/famfamfam/arrow_turn_left.png


BIN
Resources/public/famfamfam/arrow_turn_right.png


BIN
Resources/public/famfamfam/arrow_undo.png


BIN
Resources/public/famfamfam/arrow_up.png


BIN
Resources/public/famfamfam/asterisk_orange.png


BIN
Resources/public/famfamfam/asterisk_yellow.png


BIN
Resources/public/famfamfam/attach.png


BIN
Resources/public/famfamfam/award_star_add.png


BIN
Resources/public/famfamfam/award_star_bronze_1.png


BIN
Resources/public/famfamfam/award_star_bronze_2.png


BIN
Resources/public/famfamfam/award_star_bronze_3.png


BIN
Resources/public/famfamfam/award_star_delete.png


BIN
Resources/public/famfamfam/award_star_gold_1.png


BIN
Resources/public/famfamfam/award_star_gold_2.png


BIN
Resources/public/famfamfam/award_star_gold_3.png


BIN
Resources/public/famfamfam/award_star_silver_1.png


BIN
Resources/public/famfamfam/award_star_silver_2.png


BIN
Resources/public/famfamfam/award_star_silver_3.png


BIN
Resources/public/famfamfam/basket.png


BIN
Resources/public/famfamfam/basket_add.png


BIN
Resources/public/famfamfam/basket_delete.png


BIN
Resources/public/famfamfam/basket_edit.png


BIN
Resources/public/famfamfam/basket_error.png


BIN
Resources/public/famfamfam/basket_go.png


BIN
Resources/public/famfamfam/basket_put.png


BIN
Resources/public/famfamfam/basket_remove.png


BIN
Resources/public/famfamfam/bell.png


BIN
Resources/public/famfamfam/bell_add.png


BIN
Resources/public/famfamfam/bell_delete.png


BIN
Resources/public/famfamfam/bell_error.png


BIN
Resources/public/famfamfam/bell_go.png


BIN
Resources/public/famfamfam/bell_link.png


BIN
Resources/public/famfamfam/bin.png


BIN
Resources/public/famfamfam/bin_closed.png


+ 0 - 0
Resources/public/famfamfam/bin_empty.png


Vissa filer visades inte eftersom för många filer har ändrats