PartType.class.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. class PartType {
  3. public static function manifest(){
  4. return array(
  5. 'uid' => 'part',
  6. 'label' => 'Composants',
  7. 'description' => 'Composants électroniques',
  8. 'fromExtension' => array('part'),
  9. 'icon' => 'fas fa-microchip',
  10. 'color' => '#ffffff',
  11. 'background' => '#2ecc71'
  12. );
  13. }
  14. //Import depuis un glisser déposé du fichier
  15. public static function fromFile($resource){
  16. // $resource->save();
  17. // $ext = getExt($resource->label);
  18. // $name = $resource->id.'.'.$ext;
  19. // file_put_contents(SKETCH_PATH.$name,$resource->content);
  20. // $resource->content = $name;
  21. // return $resource;
  22. }
  23. //Import depuis un flux json compressé de la ressource
  24. public static function fromJson($resource){
  25. // $resource->save();
  26. // $stream = base64_decode($resource->content);
  27. // $resource->content = $resource->id.'.png';
  28. // file_put_contents(SKETCH_PATH.$resource->content,$stream);
  29. // return $resource;
  30. }
  31. //export en fichier JSON compressé de la ressource
  32. public static function toJson($resource){
  33. // $resource = $resource->toArray();
  34. // $resource['content'] = base64_encode(file_get_contents(SKETCH_PATH.$resource['content']));
  35. // return $resource;
  36. }
  37. public static function toFile($resource){
  38. // $ext = getExt($resource->content);
  39. // $infos = self::manifest();
  40. // return array(
  41. // 'name'=> slugify($resource->label).'.'.$ext,
  42. // 'content' => file_exists(SKETCH_PATH.$resource->content) ? file_get_contents(SKETCH_PATH.$resource->content) : ''
  43. // );
  44. }
  45. /* EDITION */
  46. public static function toHtml($resource,$sketch=null){
  47. $infos = self::manifest();
  48. $response = array();
  49. //.$resource->id
  50. $images = array();
  51. foreach(glob($resource->directory().SLASH.'*.*') as $file){
  52. $images[] = array(
  53. 'path' => 'hackpoint'.SLASH.'sketch'.SLASH.$resource->sketch.SLASH.$resource->id.SLASH.basename($file),
  54. 'url' => 'action.php?action=hackpoint_download_file&file='.base64_encode('sketch'.SLASH.$resource->sketch.SLASH.$resource->id.SLASH.rawurlencode(basename($file))),
  55. 'name' => basename($file),
  56. 'icon' => getExtIcon(getExt($file))
  57. );
  58. }
  59. $response['html'] = '
  60. <div class="row">
  61. <div class="col-md-12">
  62. <div class="btn btn-dark" onclick="hackpoint_part_add()"><i class="far fa-plus-square pr-1"></i> Ajouter un composant</div>
  63. <ul id="parts" data-entity-search="hackpoint_part_search">
  64. <li data-id="{{id}}" data-part="{{part}}" class="hidden">
  65. <div class="part">
  66. <input type="text" data-type="part" data-force="false" placeholder="Nom du composant" value="{{label}}" class="form-control label">
  67. <div class="part-image" data-label="Image" data-stream="{{picture}}"></div>
  68. <input class="hidden" type="file">
  69. <div class="price w-100 mt-2">
  70. <div class="input-group">
  71. <div class="input-group-prepend">
  72. <span class="input-group-text">Prix</span>
  73. </div>
  74. <input class="form-control" type="text" value="{{price}}">
  75. <div class="input-group-append">
  76. <span class="input-group-text">€</span>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="brand w-100 mt-2 mb-2">
  81. <div class="input-group">
  82. <div class="input-group-prepend">
  83. <span class="input-group-text">Marque</span>
  84. </div>
  85. <input class="form-control" type="text" value="{{brand}}"/>
  86. </div>
  87. </div>
  88. <a onclick="hackpoint_part_find(this)" title="Chercher sur le net" class="link"><i class="fas fa-globe-americas pointer"></i></a>
  89. <div class="btn btn-delete" onclick="hackpoint_resource_part_delete(this);"><i class="far fa-trash-alt"></i></div>
  90. <div class="btn btn-dark w-100 mb-3" onclick="hackpoint_part_save(this)"><i class="far fa-check-circle"></i>Valider</div>
  91. </div>
  92. </li>
  93. </ul>
  94. </div>
  95. </div>
  96. ';
  97. $response['javascript'] = 'hackpoint_part_search();';
  98. return $response;
  99. }
  100. }
  101. ?>