검색결과 리스트
Web Tech에 해당되는 글 30건
- 2017.02.11 xe1 addon 개발시 주의 사항
- 2012.11.27 MySQL 5에서 4로 다운그레이 할때
- 2012.05.19 MAMP 사용 환경에서 MySQL 쿼리 디버그 팁
- 2012.05.12 html 마크업시... callto:0000 아이폰(웹킷) 처리방법
- 2012.03.17 JQuery를 이용한 Input 입력 제한
- 2012.03.12 CSS를 이용하여 A 태그 안에 있는 내용 이미지로 대처
- 2012.02.13 CGI 프로그래밍 예제
- 2012.01.10 반응형 웹 예제
글
class나 function 선언시 function_exists나 class_exists를 이용하지 않으면 미리보기시 해당 class나 function이 두번 선언되어서 에러가 발생할 수 있음
상수 define, defined를 이용하거나 function_exists나 class_exists를 이용하여 회피
아래 예제 코드는 xeschool 에 있는 pop opener입니다.
예제 코드
<?php
if(!defined("__XE__")) exit();
if(Context::get('module') == 'admin') return;
if($called_position == 'before_module_proc') {
// 팝업 스크립트 처리
function getPopupScript($val) {
if($val->content) {
$order = array("\r\n", "\n", "\r");
$replace = '';
$val->content = str_replace($order, $replace, $val->content);
$val->content = str_replace("'", ''', $val->content);
}
$popup_content = "{id:'".$val->popup_srl."'"
.($val->popup_type?",popup_type:'".$val->popup_type."'":"")
.($val->content?",content:'".$val->content."'":"")
.($val->popup_url?",url:'".$val->popup_url."'":"")
.($val->popup_link?",link:'".$val->popup_link."'":"")
.($val->popup_link_type?",link_type:'".$val->popup_link_type."'":"")
.($val->open_type?",open_type:'".$val->open_type."'":"")
.($val->top?",top:'".$val->top."'":"")
.($val->left?",left:'".$val->left."'":"")
.($val->width?",width:'".$val->width."'":"")
.($val->height?",height:'".$val->height."'":"")
.($val->exp_days?",exp_days:'".$val->exp_days."'":"")
.($val->popup_style?",popup_style:'".$val->popup_style."'":"")
.($val->popup_checkbox?",popup_checkbox:'".$val->popup_checkbox."'":"")
.($val->element_id?",element_id:'".$val->element_id."'":"")
."}";
return $popup_content;
}
// jQuery로 팝업 열기
function setPopupScript($popupList) {
Context::addCssFile('./addons/popup_opener/popup_opener.css');
Context::addJsFile('./addons/popup_opener/jquery.popup_opener.1.5.4.3.js');
Context::loadLang(_XE_PATH_.'modules/popup/lang');
$msg_xe_popup = Context::getLang('msg_popup_do_not_display');
$addPopupScript = '<script type="text/javascript">//<![CDATA['."\n";
$addPopupScript .= "var msg_popup_do_not_display = '".$msg_xe_popup."';\n";
$addPopupScript .= 'jQuery(function(){'."\n";
if($popupList) {
if(!is_array($popupList)) $popupList = array($popupList);
foreach($popupList as $val){
$addPopupScript .= "jQuery('<div></div>',{id:'xe_popup".$val->popup_srl."'})";
$addPopupScript .= ".css({'position':'absolute','width':'".$val->width."px'})";
$addPopupScript .= ".xe_popup(".getPopupScript($val).");\n";
}
}
$addPopupScript .= '});'."\n";
$addPopupScript .= '//]]></script>'."\n";
Context::addHtmlFooter($addPopupScript);
}
// 팝업 본문 구하기
function getPopupContent($document_srl) {
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
return $oDocument->get('content');
}
if($this->module_info->module_srl) {
$oModuleModel = &getModel('module');
$isActionPopupOpen = false;
// 팝업 모듈 확인
$args->site_srl = $this->module_info->site_srl;
$popup_module_info = $oModuleModel->getModuleInfoByMid('popup', $args->site_srl);
if(!$popup_module_info) return;
// 유효일자 팝업 목록 구하기
$args->curdate = date("Ymd", mktime());
$output = executeQueryArray('popup.getPopupValidDate', $args);
if(!$output->toBool()) return;
if(count($output->data) > 0) {
foreach($output->data as $k => $pop) {
$pop->element_id = $addon_info->element_id;
if($pop->target_type == 'action' && $this->act == $pop->target_actions) {
$pop->content = getPopupContent($pop->document_srl);
$actionPopupList[$k] = $pop;
$isActionPopupOpen = true;
} else if ($pop->target_type == 'module') {
if ($this->module_srl == $pop->target_srl || $popup_module_info->module_srl == $pop->target_srl) {
$pop->content = getPopupContent($pop->document_srl);
$modulePopupList[$k] = $pop;
}
}
}
}
// 팝업 세팅
if($isActionPopupOpen) setPopupScript($actionPopupList);
else setPopupScript($modulePopupList);
}
}
?>
수정 코드
<?php
if (!defined('popup_opener_addon_func_loaded')) {
define('popup_opener_addon_func_loaded', 1);
// 팝업 스크립트 처리
function getPopupScript($val) {
if ($val->content) {
$order = array("\r\n", "\n", "\r");
$replace = '';
$val->content = str_replace($order, $replace, $val->content);
$val->content = str_replace("'", ''', $val->content);
}
$popup_content = "{id:'" . $val->popup_srl . "'"
. ($val->popup_type ? ",popup_type:'" . $val->popup_type . "'" : "")
. ($val->content ? ",content:'" . $val->content . "'" : "")
. ($val->popup_url ? ",url:'" . $val->popup_url . "'" : "")
. ($val->popup_link ? ",link:'" . $val->popup_link . "'" : "")
. ($val->popup_link_type ? ",link_type:'" . $val->popup_link_type . "'" : "")
. ($val->open_type ? ",open_type:'" . $val->open_type . "'" : "")
. ($val->top ? ",top:'" . $val->top . "'" : "")
. ($val->left ? ",left:'" . $val->left . "'" : "")
. ($val->width ? ",width:'" . $val->width . "'" : "")
. ($val->height ? ",height:'" . $val->height . "'" : "")
. ($val->exp_days ? ",exp_days:'" . $val->exp_days . "'" : "")
. ($val->popup_style ? ",popup_style:'" . $val->popup_style . "'" : "")
. ($val->popup_checkbox ? ",popup_checkbox:'" . $val->popup_checkbox . "'" : "")
. ($val->element_id ? ",element_id:'" . $val->element_id . "'" : "")
. "}";
return $popup_content;
}
// jQuery로 팝업 열기
function setPopupScript($popupList) {
Context::addCssFile('./addons/popup_opener/popup_opener.css');
Context::addJsFile('./addons/popup_opener/jquery.popup_opener.1.5.4.3.js');
Context::loadLang(_XE_PATH_ . 'modules/popup/lang');
$msg_xe_popup = Context::getLang('msg_popup_do_not_display');
$addPopupScript = '<script type="text/javascript">//<![CDATA[' . "\n";
$addPopupScript .= "var msg_popup_do_not_display = '" . $msg_xe_popup . "';\n";
$addPopupScript .= 'jQuery(function(){' . "\n";
if ($popupList) {
if (!is_array($popupList)) $popupList = array($popupList);
foreach ($popupList as $val) {
$addPopupScript .= "jQuery('<div></div>',{id:'xe_popup" . $val->popup_srl . "'})";
$addPopupScript .= ".css({'position':'absolute','width':'" . $val->width . "px'})";
$addPopupScript .= ".xe_popup(" . getPopupScript($val) . ");\n";
}
}
$addPopupScript .= '});' . "\n";
$addPopupScript .= '//]]></script>' . "\n";
Context::addHtmlFooter($addPopupScript);
}
// 팝업 본문 구하기
function getPopupContent($document_srl) {
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
return $oDocument->get('content');
}
}
if (!defined("__XE__")) exit();
if (Context::get('module') == 'admin') return;
if ($called_position == 'before_module_proc') {
if ($this->module_info->module_srl) {
$oModuleModel = &getModel('module');
$isActionPopupOpen = false;
// 팝업 모듈 확인
$args->site_srl = $this->module_info->site_srl;
$popup_module_info = $oModuleModel->getModuleInfoByMid('popup', $args->site_srl);
if (!$popup_module_info) return;
// 유효일자 팝업 목록 구하기
$args->curdate = date("Ymd", mktime());
$output = executeQueryArray('popup.getPopupValidDate', $args);
if (!$output->toBool()) return;
if (count($output->data) > 0) {
foreach ($output->data as $k => $pop) {
$pop->element_id = $addon_info->element_id;
if ($pop->target_type == 'action' && $this->act == $pop->target_actions) {
$pop->content = getPopupContent($pop->document_srl);
$actionPopupList[$k] = $pop;
$isActionPopupOpen = true;
} else if ($pop->target_type == 'module') {
if ($this->module_srl == $pop->target_srl || $popup_module_info->module_srl == $pop->target_srl) {
$pop->content = getPopupContent($pop->document_srl);
$modulePopupList[$k] = $pop;
}
}
}
}
// 팝업 세팅
if ($isActionPopupOpen) setPopupScript($actionPopupList);
else setPopupScript($modulePopupList);
}
}
'Web Tech > PHP' 카테고리의 다른 글
MAMP 사용 환경에서 MySQL 쿼리 디버그 팁 (0) | 2012.05.19 |
---|---|
CGI 프로그래밍 예제 (0) | 2012.02.13 |
PHPUnitFramework 를 이용한 TDD (0) | 2011.06.13 |
PHP5 익명 변수, 익명 인스턴스 (0) | 2011.01.29 |
Dynamic Table (동적 테이블) ROW(열) 삽입 크로스브라우징 (0) | 2010.12.26 |
글
# mysqldump -udbid -ppassword --compatible=mysql40 --default-character-set=euckr dbname > outputfilename.sql
mysql 4.0인 경우는 당연히 utf8을 지원하는 스펙이 없어서 위 처럼 한다.
'Web Tech' 카테고리의 다른 글
html5 form element kit (0) | 2012.01.10 |
---|---|
C#, VB.net로 만든 코드를 웹으로~ (0) | 2011.10.07 |
플래쉬 소스 (0) | 2011.06.07 |
글
혹 이것보다 좋은 방법 있으신분 공유 부탁드립니다!!!
sudo /Applications/MAMP/bin/stopMysql.sh
/Applications/MAMP/Library/bin/mysqld --defaults-file=/Applications/MAMP/tmp/mysql/my.cnf --basedir=/Applications/MAMP/Library --datadir=/Library/Application\ Support/appsolute/MAMP\ PRO/db/mysql --plugin-dir=/Applications/MAMP/Library/lib/plugin --tmpdir=/Applications/MAMP/tmp/mysql/tmpdir --log-error=/Applications/MAMP/logs/mysql_error_log.err --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --socket=/Applications/MAMP/tmp/mysql/mysql.sock --port=3306 --log=/Users/ned3y2k/log.txt&
tail -f /Users/ned3y2k/log.txt
Mac에서만 됩니다!
기타 환경에서는 참고 하셔서 명령어 좀 바꾸시길!
'Web Tech > PHP' 카테고리의 다른 글
xe1 addon 개발시 주의 사항 (0) | 2017.02.11 |
---|---|
CGI 프로그래밍 예제 (0) | 2012.02.13 |
PHPUnitFramework 를 이용한 TDD (0) | 2011.06.13 |
PHP5 익명 변수, 익명 인스턴스 (0) | 2011.01.29 |
Dynamic Table (동적 테이블) ROW(열) 삽입 크로스브라우징 (0) | 2010.12.26 |
글
아이폰에서는 callto 형식을 인식 할수 없다.
데스크탑에서는 인식하겠지만...
아이폰인 경우는 링크를 교체해주도록 한다.<a href="callto:0123456789">call me</a>
window.onload = function () {
if (navigator.userAgent.match (/iPhone/i)) {
var a = document.getElementsByTagName ("a");
for (var i = 0; i < a.length; i++) {
if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
a[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
}
}
}
};
'Web Tech > Javascript' 카테고리의 다른 글
JQuery를 이용한 Input 입력 제한 (0) | 2012.03.17 |
---|---|
HTML5 WebSql5 간단 예제 (0) | 2011.12.22 |
Javascript에서 prototype은 무엇인가? (0) | 2011.09.26 |
Javascript trim, ltrim, rtrim (0) | 2011.09.26 |
JAVASCRIPT OOP 재정리 하여야 할 부분 (0) | 2011.09.14 |
글
숫자만 입력해야 하는 경우에 아래 내용을 그대로 사용하시면 됩니다.
function pressKeyCheck(e) {
if (e.charCode < 0x30 || e.charCode > 0x39) {
return false;
}
}
$('input[name=?]').keypress(pressKeyCheck);
0x30과 0x39는 아스키 테이블 기준 숫자 0~9까지입니다,.
'Web Tech > Javascript' 카테고리의 다른 글
html 마크업시... callto:0000 아이폰(웹킷) 처리방법 (0) | 2012.05.12 |
---|---|
HTML5 WebSql5 간단 예제 (0) | 2011.12.22 |
Javascript에서 prototype은 무엇인가? (0) | 2011.09.26 |
Javascript trim, ltrim, rtrim (0) | 2011.09.26 |
JAVASCRIPT OOP 재정리 하여야 할 부분 (0) | 2011.09.14 |
글
'Web Tech > CSS & HTML' 카테고리의 다른 글
반응형 웹 예제 (0) | 2012.01.10 |
---|---|
CSS Gradient 생성기 (0) | 2011.08.23 |
모바일(아이폰) 웹 브라우저 텍스트 크기 자동 조정 문제. (0) | 2011.08.17 |
CSS 글자에 그라데이션 효과 주기 (0) | 2009.08.27 |
글
posix 환경에서도 별 차이 없을것으로 예상됩니다만 iostream 이나 namespace 쓰는 부분에서 틀릴수 있습니다.
컴파일 프로그램은 Visual Studio입니다.
#include "stdafx.h"
php 작업 하는데 뭐 이런게 필요하냐고 물어 보시는분 있겠지만 재미로 한번 해보시기 바랍니다!
posix 환경용(apache용) 코드는 파일 첨부로 게시합니다.
php cgi를 추가 하는 방식처럼 추가하면 됩니다.
2012. 4. 6 내용추가합니다.
GET, REQUEST등 각종 REQUEST를 처리하기 위해서는 an ANSI C library for CGI Programming 라이브러리가 추가로 필요합니다.
'Web Tech > PHP' 카테고리의 다른 글
xe1 addon 개발시 주의 사항 (0) | 2017.02.11 |
---|---|
MAMP 사용 환경에서 MySQL 쿼리 디버그 팁 (0) | 2012.05.19 |
PHPUnitFramework 를 이용한 TDD (0) | 2011.06.13 |
PHP5 익명 변수, 익명 인스턴스 (0) | 2011.01.29 |
Dynamic Table (동적 테이블) ROW(열) 삽입 크로스브라우징 (0) | 2010.12.26 |
글
http://dic.daum.net
'Web Tech > CSS & HTML' 카테고리의 다른 글
CSS를 이용하여 A 태그 안에 있는 내용 이미지로 대처 (0) | 2012.03.12 |
---|---|
CSS Gradient 생성기 (0) | 2011.08.23 |
모바일(아이폰) 웹 브라우저 텍스트 크기 자동 조정 문제. (0) | 2011.08.17 |
CSS 글자에 그라데이션 효과 주기 (0) | 2009.08.27 |