PageRenderTime 46ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/backupbuddy/pluginbuddy/lib/media_library/media_library.php

https://bitbucket.org/betaimages/chakalos
PHP | 222 lines | 148 code | 38 blank | 36 comment | 7 complexity | b90a425a634d82b253f77d484cae3288 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. class pb_backupbuddy_medialibrary {
  3. private $_save_point = '';
  4. private $_default_options_point = '';
  5. private $_instance = 0;
  6. function __construct( $save_point, $default_options_point ) {
  7. $this->_save_point = $save_point;
  8. $this->_default_options_point = $default_options_point;
  9. $this->_instance = pb_backupbuddy::random_string();
  10. }
  11. function display() {
  12. pb_backupbuddy::load_script( 'jquery-ui-draggable' );
  13. pb_backupbuddy::load_script( 'jquery-ui-sortable' );
  14. ?>
  15. <script type="text/javascript">
  16. jQuery(document).ready(function() {
  17. jQuery( '.pb_medialibrary_slot_<?php echo $this->_instance; ?>' ).sortable({
  18. opacity: 0.6,
  19. cursor: "move",
  20. revert: true,
  21. update: function(e,ui) {
  22. // Only save changes on drop IN, not pull out phase of the update. Prevents double firing and pulling out of things too early.
  23. if (this === ui.item.parent()[0]) {
  24. var this_placed_item = jQuery(ui.item);
  25. jQuery(ui.item).removeClass('pb_medialibrary_draggable');
  26. jQuery(ui.item).addClass('pb_medialibrary_slotitem');
  27. slot_items = new Array();
  28. jQuery(this).children('.pb_medialibrary_slotitem').each(function(j) {
  29. slot_items.push( jQuery(this).attr('rel') );
  30. });
  31. jQuery('#pb_medialibrary_saving').show();
  32. //alert( slot_items );
  33. jQuery.ajax({
  34. type: 'POST',
  35. url: '<?php echo pb_backupbuddy::ajax_url( 'media_library' ); ?>&actionb=save_images_list',
  36. data: 'items=' + slot_items + '&save_point=<?php echo str_replace( '\'', '\\\'', $this->_save_point ); ?>&default_options_point=<?php echo str_replace( '\'', '\\\'', $this->_default_options_point ); ?>',
  37. success: function(msg){
  38. jQuery('#pb_saving').hide();
  39. //alert( msg );
  40. //this_placed_item.children('.loop_item_buttons').css({'display':'block'}); // Show settings icon on newly placed slot item.
  41. /*
  42. if ( msg.unique_id != 0 ) {
  43. this_placed_item.attr('id', 'pbloop-' + msg.unique_id);
  44. }
  45. */
  46. }
  47. // , 'dataType': 'json'
  48. });
  49. }
  50. },
  51. start: function(e,ui) {
  52. /* New jQuery fix (new slot items do not cause over method to trigger. */
  53. //jQuery('.loop_slot').css({'background':'transparent'}); /* New jQuery fix. Changing existing slot item keeps its slot bg colored. */
  54. //jQuery(this).css({'background':'#EAF2FA'});
  55. jQuery( '.pb_medialibrary_item' ).draggable( 'option', 'revert', false );
  56. },
  57. stop: function(e,ui) {
  58. jQuery(this).css({'background':'transparent'});
  59. jQuery( '.pb_medialibrary_item' ).draggable( 'option', 'revert', true );
  60. },
  61. over: function(e,ui) {
  62. jQuery('.pb_medialibrary_item').css({'background':'transparent'}); /* New jQuery fix. Changing existing slot item keeps its slot bg colored. */
  63. jQuery(this).css({'background':'#EAF2FA'});
  64. jQuery( '.pb_medialibrary_item' ).draggable( 'option', 'revert', false );
  65. },
  66. out: function(e,ui) {
  67. jQuery(this).css({'background':'transparent'});
  68. /* jQuery( '.loop_item' ).draggable( 'option', 'revert', true ); New jQuery fix. Prevents revert from double flying. */
  69. }
  70. });
  71. //jQuery( '.pb_medialib_1' ).disableSelection();
  72. jQuery('.pb_medialibrary_draggable').draggable({
  73. revert: true,
  74. opacity: '.9',
  75. zIndex: 15,
  76. helper: 'clone',
  77. appendTo: 'body',
  78. connectToSortable: '.pb_medialibrary_slot_<?php echo $this->_instance; ?>'
  79. });
  80. });
  81. </script>
  82. <style type="text/css">
  83. .pb_medialibrary div {
  84. display: inline-block;
  85. height: 150px;
  86. position: relative;
  87. cursor: move;
  88. }
  89. .pb_medialibrary div img {
  90. //margin: 3px;
  91. }
  92. .pb_medialibrary {
  93. max-height: 480px;
  94. overflow: scroll;
  95. }
  96. .pb_medialibrary_item {
  97. margin: 5px;
  98. text-align: center;
  99. line-height: 1.1em;
  100. }
  101. .pb_medialibrary_imgbox {
  102. display: inline-block;
  103. position: relative;
  104. //margin: 3px;
  105. cursor: move;
  106. }
  107. .pb_medialibrary_settingsbox {
  108. position: absolute;
  109. right: 0;
  110. z-index: 30;
  111. display: none;
  112. cursor: pointer;
  113. background: white;
  114. }
  115. .pb_medialibrary_settingsbox_hot {
  116. color: red;
  117. }
  118. </style>
  119. <?php
  120. pb_backupbuddy::$ui->start_metabox( 'Images in Group <span id="pb_medialibrary_saving" style="display: none;">Saving</span>', true, 'width: 48%; min-width: 400px; float: left;' );
  121. echo '<div class="pb_medialibrary_slot_' . $this->_instance . ' pb_medialibrary">';
  122. $group_images = &pb_backupbuddy::get_group( $this->_save_point );
  123. foreach( $group_images as $image_index => $image ) {
  124. $image_dat = wp_get_attachment_image_src( $image['id'], 'thumbnail' );
  125. echo '<div class="pb_medialibrary_item pb_medialibrary_slotitem" rel="' . $image['id'] . '"><img src="' . $image_dat[0] . '"></div>';
  126. }
  127. echo '</div>';
  128. pb_backupbuddy::$ui->end_metabox();
  129. pb_backupbuddy::$ui->start_metabox( 'WordPress Media Library', true, 'width: 48%; min-width: 400px; float: right;' );
  130. ?>
  131. <div class="pb_medialibrary">
  132. <?php
  133. global $wpdb;
  134. $result = mysql_query( "SELECT ID,post_title FROM {$wpdb->prefix}posts WHERE post_type='attachment'" );
  135. while ( $rs = mysql_fetch_assoc( $result ) ) {
  136. //echo '<pre>' . print_r( $rs, true ) . '</pre>';
  137. $image_dat = wp_get_attachment_image_src( $rs['ID'], 'thumbnail' );
  138. //echo '<pre>' . print_r( \wp_get_attachment_metadata( $rs['ID'] ) , true ) . '</pre>';
  139. //echo '<pre>' . print_r( $image_dat, true ) . '</pre>';
  140. echo '<div class="pb_medialibrary_item pb_medialibrary_draggable" rel="' . $rs['ID'] . '"><span class="pb_medialibrary_settingsbox">Settings</span><img class="pb_medialibrary_lazy" data-original="' . $image_dat[0] . '" src="" title="' . $rs['post_title'] . '"></div>';
  141. }
  142. unset( $result );
  143. ?>
  144. </div>
  145. <?php
  146. pb_backupbuddy::$ui->end_metabox();
  147. }
  148. public function ajax( $actionb ) {
  149. if ( $actionb == 'save_images_list' ) { // User modified the list of images in a group.
  150. //echo '<pre>' . print_r( pb_backupbuddy::_POST(), true ) . '</pre>';
  151. $images = explode( ',', pb_backupbuddy::_POST( 'items' ) );
  152. echo '<pre>' . print_r( $images, true ) . '</pre>';
  153. // Prepare savepoint.
  154. if ( $this->_save_point != '' ) {
  155. $savepoint_root = $this->_save_point; // . '#';
  156. } else {
  157. $savepoint_root = '';
  158. }
  159. $image_root = &pb_backupbuddy::get_group( $savepoint_root );
  160. $image_root = array();
  161. foreach ( $images as $image_id ) { // Loop through each item in list.
  162. //echo 'id: ' . $image_id . '<br>';
  163. $image_defaults = pb_backupbuddy::settings( pb_backupbuddy::_POST( 'default_options_point' ) );
  164. $image_defaults['id'] = $image_id;
  165. $image_root[] = $image_defaults;
  166. /*
  167. //echo '<pre>' . print_r( $image_defaults, true ) . '</pre>';
  168. // From old save_settings():
  169. $savepoint_subsection = &pb_backupbuddy::$options;
  170. $savepoint_levels = explode( '#', $savepoint_root );
  171. foreach ( $savepoint_levels as $savepoint_level ) {
  172. $savepoint_subsection = &$savepoint_subsection{$savepoint_level};
  173. }
  174. // Apply settings.
  175. $savepoint_subsection[] = $image_defaults;
  176. */
  177. }
  178. //echo '<pre>' . print_r( $image_root, true ) . '</pre>';
  179. pb_backupbuddy::save();
  180. }
  181. die();
  182. }
  183. }