<?php
namespace Jackbooted\Admin;
use \Jackbooted\Config\Cfg;
use \Jackbooted\Forms\Request;
use \Jackbooted\Forms\Response;
use \Jackbooted\Html\JS;
use \Jackbooted\Html\Tag;
use \Jackbooted\Html\WebPage;
/**
* @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved.
*
* Written by Brett Dutton of Jackbooted Software
* brett at brettdutton dot com
*
* This software is written and distributed under the GNU General Public
* License which means that its source code is freely-distributed and
* available to the general public.
*/
class ImagePositionLocator extends WebPage {
protected function zoom () {
$siteUrl = Cfg::siteUrl();
$html = '';
$html .= JS::library( JS::JQUERY );
// Get the current Pin
$url = Request::get ( 'url' );
$jQuery = <<<JS
var currentXPos = 0;
var currentYPos = 0;
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouseXY;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
currentXPos = event.clientX + document.body.scrollLeft;
currentYPos = event.clientY + document.body.scrollTop;
} else { // grab the x-y pos.s if browser is NS
currentXPos = e.pageX;
currentYPos = e.pageY;
}
if (currentXPos < 0) currentXPos = 0;
if (currentYPos < 0) currentYPos = 0;
return true;
}
function movePinToCursor () {
var offs = $('#baseImage').offset();
$('#PinTop').attr ( 'value', '' + parseInt ( currentYPos - offs.top ) );
$('#PinLeft').attr ( 'value', '' + parseInt ( currentXPos - offs.left ) );
}
JS;
$html .= JS::javaScript( $jQuery );
$html .= Tag::img ( $siteUrl . $url,
[ 'title' => 'Click on this image to move the Pin',
'id' => 'baseImage',
'onClick' => 'movePinToCursor();',
'name' => 'voodoo_image' ] );
$html .= '<br>X' . Tag::text ( 'PinLeft', '', [ 'size' => 4, 'id' => 'PinLeft' ] );
$html .= '<br>Y' . Tag::text ( 'PinTop', '', [ 'size' => 4, 'id' => 'PinTop' ] );
return $html;
}
/**
* Searches all the files in the passed directory and scans them for classes
* @param string $classesDir
*/
private function findImages ( $searchDir ) {
$items = [];
$handle = opendir ( $searchDir );
while ( false !== ( $file = readdir ( $handle ) ) ) {
if ( strpos ( $file, '.' ) === 0 ) continue;
if ( strpos ( $file, '_private' ) === 0 ) continue;
if ( strpos ( $file, 'thumbs' ) === 0 ) continue;
$fullPathName = $searchDir . '/' . $file;
if ( is_dir ( $fullPathName ) ) $items = array_merge ( $items, $this->findImages ( $fullPathName ) );
else if ( preg_match( '/^.*\.(jpg|jpeg|png|gif)$/i', $file ) ) $items[] = $fullPathName;
}
closedir ( $handle );
return $items;
}
public function index ( ) {
$sitePath = Cfg::get ( 'site_path' );
$sitePathLen = strlen ( $sitePath );
$resp = Response::factory()->action ( __CLASS__ . '->zoom()' );
$html = Tag::ul ( );
foreach ( $this->findImages ( $sitePath ) as $item ) {
$relItemName = substr ( $item, $sitePathLen );
$html .= Tag::li ( ) .
Tag::hRef ( '?' . $resp->set ( 'url' , $relItemName )->toUrl (), $relItemName ) .
Tag::_li ( );
}
$html .= Tag::_ul ( );
return $html;
}
}
|