diff --git a/.htaccess b/.htaccess index 12419e500..107117993 100644 --- a/.htaccess +++ b/.htaccess @@ -36,10 +36,10 @@ RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&categor RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&category=$2&page=$3 [L] # mid + search target regdate (year+month) -RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+){0,4}/([[:digit:]]+){0,2}$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)/([[:digit:]]+)$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3 [L] # mid + search target regdate (year+month+day) -RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+){0,4}/([[:digit:]]+){0,2}/([[:digit:]]+){0,2}$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3$4 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)/([[:digit:]]+)/([[:digit:]]+)$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3$4 [L] # mid + search target tag RewriteRule ^([a-zA-Z0-9_]+)/tag/(.*)$ ./index.php?mid=$1&search_target=tag&search_keyword=$2 [L] diff --git a/addons/blogapi/conf/info.xml b/addons/blogapi/conf/info.xml index 0357039f7..fab5123ba 100644 --- a/addons/blogapi/conf/info.xml +++ b/addons/blogapi/conf/info.xml @@ -1,42 +1,42 @@ - - - BlogAPI 애드온 - BlogAPI - BlogAPI - Addon for BlogAPI - BlogAPI Adicionales - - 제로 - Zero - zero - zero - zero - - metaWeblog를 지원하는 blogApi애드온입니다. - 사용으로 설정하시면 각 모듈마다 RSD 태그를 노출합니다. - api의 주소는 http://설치주소/모듈명/api 입니다. - 사용으로 하셔야 RSD태그 및 api가 동작을 합니다. - - - MetaWeblogをサポートするBlogAPI アドオンです。「使用する」をクリックして設定すると各モジュールごとRSDのアドレスを表示します。API のアドレスは「http://インストールURL/モジュール名/api」です。 「使用する」に設定しておけば RSDのアドレスが表示され、 API が動作します。 - - - 支持metaWeblog的 blogApi插件。 - 设置为"启用"时,会使每个模块都会显示RSD标签。 - api地址为http://安装地址/模块名/api。 - 把状态设置为"使用"时,才会激活RSD标签及api。 - - - This blogApi addon supports metaWeblog. - Toggling this with use option lets RSD tag be exposed for each module. - URL to the api is http://setup_path/module_name/api. - Only selecting use option enables RSD tag and api to behave. - - - Es adicionales para soporte de metaWeblog. - Si marcar en uso, cada modulas van a exponer RSD etiqueta. - dirección de es, http://dirección de instalación/nombre de modula/api. - Para funcionar RSD etiqueta y API, es nesesario marcar USAR. - - - + + + BlogAPI 애드온 + BlogAPI + BlogAPI + Addon for BlogAPI + Addon para BlogAPI + + 제로 + Zero + zero + zero + zero + + metaWeblog를 지원하는 blogApi애드온입니다. + 사용으로 설정하시면 각 모듈마다 RSD 태그를 노출합니다. + api의 주소는 http://설치주소/모듈명/api 입니다. + 사용으로 하셔야 RSD태그 및 api가 동작을 합니다. + + + MetaWeblogをサポートするBlogAPI アドオンです。「使用する」をクリックして設定すると各モジュールごとRSDのアドレスを表示します。API のアドレスは「http://インストールURL/モジュール名/api」です。 「使用する」に設定しておけば RSDのアドレスが表示され、 API が動作します。 + + + 支持metaWeblog的 blogApi插件。 + 设置为"启用"时,会使每个模块都会显示RSD标签。 + api地址为http://安装地址/模块名/api。 + 把状态设置为"使用"时,才会激活RSD标签及api。 + + + This blogApi addon supports metaWeblog. + Toggling this with use option lets RSD tag be exposed for each module. + URL to the api is http://setup_path/module_name/api. + Only selecting use option enables RSD tag and api to behave. + + + Este blogApi addon soporta el metaWeblog. + Si seleccionas la optión usar, cada módulo entregará la etiqueta RSD. + La dirección de api es http://dirección de la instalación/nombre de módulo/api. + Sólo si seleccionas la opción usar, funcionará la etiqueta RSD y api. + + + diff --git a/addons/counter/conf/info.xml b/addons/counter/conf/info.xml index 52230ebe6..af6855c35 100644 --- a/addons/counter/conf/info.xml +++ b/addons/counter/conf/info.xml @@ -1,33 +1,34 @@ - - - 기본 카운터 애드온 - 接続カウンター - 网站访问统计 - Addon for basic counter - Adición Taquilla Predeterminado - - 제로 - Zero - zero - zero - zero - - 제로보드XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다. - 이 애드온을 켜셔야 접속 정보 수집이 됩니다. - - - セロボードXEの接続カウンターモジュールは、接続情報を記録します。このアドオンを「使用」に設定しておくと接続情報が記録されます。 - - - 利用ZeroboardXE的网站访问统计模块记录网站访问信息。 - 把状态设置为"使用"时,才会记录网站访问信息. - - - This addon logs access information based on the basic counter module within Zeroboard XE. - It is necessary for aggregation of access information to turn on this addon. - - - Contar los visitantes con la taquilla predeterminado de ZeroBoardXE. Es necesario aprender esta adición para acumular las información de visitos. - - - + + + 기본 카운터 애드온 + 接続カウンター + 网站访问统计 + Addon for basic counter + Addon contador básico + + 제로 + Zero + zero + zero + zero + + 제로보드XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다. + 이 애드온을 켜셔야 접속 정보 수집이 됩니다. + + + セロボードXEの接続カウンターモジュールは、接続情報を記録します。このアドオンを「使用」に設定しておくと接続情報が記録されます。 + + + 利用ZeroboardXE的网站访问统计模块记录网站访问信息。 + 把状态设置为"使用"时,才会记录网站访问信息. + + + This addon logs access information based on the basic counter module within Zeroboard XE. + It is necessary for aggregation of access information to turn on this addon. + + + Este addon contador básico de Zeroboard XE permite llevar la información de acceso a la página web de los visitantes. + Es necesario activar este addon para agregar la información de acceso. + + + diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 51ea8c593..ba9f8e3b1 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -1,64 +1,64 @@ - - - 사용자 추가 정보 및 커뮤니케이션 기능 활성화 - 会員情報・コミュニティ - 用户扩展信息 - Addon for enabling facilities for providing additional information about users and communicating - Informaciónes addciónales del usuario y actualzación del función communicación. - - 제로 - Zero - zero - zero - zero - - 사용자의 정보중 이미지이름, 이미지마크, 서명등을 화면에 출력해주는 애드온입니다. - 이런 정보들을 사용하지 않을 경우를 대비하여 별도의 애드온으로 빼어서 실행시간을 줄여줍니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - 1. 출력되기 직전 &lt;div class="member_회원번호"&gt;....&lt;/div&gt; 로 정의가 된 부분을 찾아 회원번호를 구해서 이미지이름, 이미지마크가 있는지를 확인하여 있으면 내용을 변경해버립니다. - 2. 출력되기 직전 &lt;div class="document_번호"&gt;...&lt;/div&gt;로 정의된 곳을 찾아 글의 내용이라 판단, 하단에 서명을 추가합니다. - 3. 새로운 쪽지가 왔을 경우 팝업으로 띄움 - 4. MemberModel::getMemberMenu 호출시 대상이 회원일 경우 쪽지 보내기 기능 추가합니다. - 5. MemberModel::getMemberMenu 호출시 친구 등록 메뉴를 추가합니다. - - - 会員情報のイメージ名、イメージマーク、署名などを画面に表示するアドオンです。このような情報を使用しない場合、アドオンを「使用」に設定すれば、実行時間を少なくします。イメージ名、イメージマーク、署名などを表示させたい時は、このアドオンを「使用」に設定して下さい。 - - 1. 出力の直前 <div class="member_会員番号">....</div> に定義された部分を探し、会員番号をチェックしてイメージ名、イメージマークがあるかを確認します。あった場合は内容を変更します - 2. 出力の直前 <div class="document_番号">...</div>に定義された部分を探し、書込みの内容だと判断して、下段に署名を追加します - 3. 新しいメッセージが来た場合ポップアップで表示します - 4. MemberModel::getMemberMenu を呼出す時、相手が会員の場合はメッセージ送信の機能を追加します - 5. MemberModel::getMemberMenu を呼出す時、友達登録メニュを追加します - - - 此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。 - 因部分用户不使用此项功能或为了考虑页面载入速度,以插件形式提供此项功能。 - 要想使用会员扩展信息请激活此插件。 - 1. 显示之前先查找定义为 &lt;div class="member_会员编号"&gt;....&lt;/div&gt; 的部分获得会员编号后,再以会员编号确认有没有昵称图片/用户图标,有的话即可更新相关内容。 - 2. 显示之前先查找定义为 &lt;div class="document_编号"&gt;...&lt;/div&gt;的部分判断此处为主题内容后,在此处下方添加个人签名。 - 3. 收到新消息时,用弹出窗口显示。 - 4. 呼出MemberModel::getMemberMenu时,如对方是会员,就添加[发送短消息]功能。 - 5. 呼出MemberModel::getMemberMenu时,添加[加为好友]菜单。 - - - Among other information about users, this addon displays image name, image mark, and signature. - In case of you not use this information, this stands apart from basic information so runtime should be reduced. - To expose image name, image mark, and signature, please turn on this addon. - 1. Just before displaying user information, this will figure out unique key of member from the definition of "&lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt;" and replace image name and/or image mark if they exsist. - 2. Just before displaying, this is gonna locate the definition of "&lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt;" and insert the signature below it. - 3. When arrived a new slip, this will popup it. - 4. This makes available to send a slip if the target is a member when MemberModel::getMemberMenu is called. - 5. This adds a menu for registering as a friend when MemberModel::getMemberMenu is called. - - - Se muestra nombre de imagén, marcador de imagén, firma del usuario. - para cortar la ejecución de programa, si no es necessario, puede apagar la function adicionales. - Necesita actualizar este funcion, por favor haga clic en ´usar´. - 1. Este adición busca <div class="member_Num. usuario">....</div> en los documentos, y calcula numero de usuario. Y si hay nombre de imagen, marcador de imagen, se cambia el contenido. - 2. Este adicion busca <div class="document_Num. documentos">...</div> en los documentos, coloca la firma donde interpreta el termino de contenido. - 3. Si llega nota, se muestra en pop up. - 4. Si llama MemberModel::getMemberMenu, si es miembro, funcion de "mandar nota" se actualiza. - 5. Si llama MemberModel::getMemberMenu, el addiciona menú ¨agregar contacto¨. - - - + + + 사용자 추가 정보 및 커뮤니케이션 기능 활성화 + 会員情報・コミュニティ + 用户扩展信息 + Addon for enabling facilities for providing additional information about users and communicating + Addon para activar facilidades para proveer Información addcional acerca del usuario y comunicación. + + 제로 + Zero + zero + zero + zero + + 사용자의 정보중 이미지이름, 이미지마크, 서명등을 화면에 출력해주는 애드온입니다. + 이런 정보들을 사용하지 않을 경우를 대비하여 별도의 애드온으로 빼어서 실행시간을 줄여줍니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 1. 출력되기 직전 &lt;div class="member_회원번호"&gt;....&lt;/div&gt; 로 정의가 된 부분을 찾아 회원번호를 구해서 이미지이름, 이미지마크가 있는지를 확인하여 있으면 내용을 변경해버립니다. + 2. 출력되기 직전 &lt;div class="document_번호"&gt;...&lt;/div&gt;로 정의된 곳을 찾아 글의 내용이라 판단, 하단에 서명을 추가합니다. + 3. 새로운 쪽지가 왔을 경우 팝업으로 띄움 + 4. MemberModel::getMemberMenu 호출시 대상이 회원일 경우 쪽지 보내기 기능 추가합니다. + 5. MemberModel::getMemberMenu 호출시 친구 등록 메뉴를 추가합니다. + + + 会員情報のイメージ名、イメージマーク、署名などを画面に表示するアドオンです。このような情報を使用しない場合、アドオンを「使用」に設定すれば、実行時間を少なくします。イメージ名、イメージマーク、署名などを表示させたい時は、このアドオンを「使用」に設定して下さい。 + + 1. 出力の直前 <div class="member_会員番号">....</div> に定義された部分を探し、会員番号をチェックしてイメージ名、イメージマークがあるかを確認します。あった場合は内容を変更します + 2. 出力の直前 <div class="document_番号">...</div>に定義された部分を探し、書込みの内容だと判断して、下段に署名を追加します + 3. 新しいメッセージが来た場合ポップアップで表示します + 4. MemberModel::getMemberMenu を呼出す時、相手が会員の場合はメッセージ送信の機能を追加します + 5. MemberModel::getMemberMenu を呼出す時、友達登録メニュを追加します + + + 此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。 + 因部分用户不使用此项功能或为了考虑页面载入速度,以插件形式提供此项功能。 + 要想使用会员扩展信息请激活此插件。 + 1. 显示之前先查找定义为 &lt;div class="member_会员编号"&gt;....&lt;/div&gt; 的部分获得会员编号后,再以会员编号确认有没有昵称图片/用户图标,有的话即可更新相关内容。 + 2. 显示之前先查找定义为 &lt;div class="document_编号"&gt;...&lt;/div&gt;的部分判断此处为主题内容后,在此处下方添加个人签名。 + 3. 收到新消息时,用弹出窗口显示。 + 4. 呼出MemberModel::getMemberMenu时,如对方是会员,就添加[发送短消息]功能。 + 5. 呼出MemberModel::getMemberMenu时,添加[加为好友]菜单。 + + + Among other information about users, this addon displays image name, image mark, and signature. + In case of you not use this information, this stands apart from basic information so runtime should be reduced. + To expose image name, image mark, and signature, please turn on this addon. + 1. Just before displaying user information, this will figure out unique key of member from the definition of "&lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt;" and replace image name and/or image mark if they exsist. + 2. Just before displaying, this is gonna locate the definition of "&lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt;" and insert the signature below it. + 3. When arrived a new slip, this will popup it. + 4. This makes available to send a slip if the target is a member when MemberModel::getMemberMenu is called. + 5. This adds a menu for registering as a friend when MemberModel::getMemberMenu is called. + + + Addon que permite mostrar en la pantalla entre las informaciones del usuario, el nombre de la imagen, marca de la imagen y la firma . + En caso de no usar estas informaciones, esta forma de usar separadamente en addon permite reducir el tiempo de ejecución. + Deberá activar este addon si desea mostrar informaciones adicionales. + 1. Justo antes de mostrar la información del usuario, este addon buscará la definición "<div class="member_Número del usuario">....</div>", si la encuentra reemplazará el nombre de la imagen y/o la marca de la imagen. + 2. Justo antes de mostrar, este addon va a localizar la definición "<div class="document_Número del mensaje">...</div> e insertará la firma en la parte final del mensaje. + 3. Si ha llegado una nueva nota, aprarecerá una ventana popup. + 4. Se activa la función "Enviar Nota" si la persona que envió la nota es usuario al comprobar en MemberModel::getMemberMenu. + 5. Agrega el menú "Ägregar Contacto" al llamar MemberModel::getMemberMenu. + + + diff --git a/addons/member_extra_info/lang/es.lang.php b/addons/member_extra_info/lang/es.lang.php new file mode 100644 index 000000000..80b140057 --- /dev/null +++ b/addons/member_extra_info/lang/es.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = 'Te ha llegado un nuevo mensaje. Deseas leer ahora?'; +?> diff --git a/addons/openid_delegation_id/conf/info.xml b/addons/openid_delegation_id/conf/info.xml index 767e00699..572ca839b 100644 --- a/addons/openid_delegation_id/conf/info.xml +++ b/addons/openid_delegation_id/conf/info.xml @@ -1,72 +1,72 @@ - - - OpenID delegation ID - OpenID - Addon for delegating domain name to OpenID - delegación ID para OpenID - OpenID - - 제로 - zero - zero - zero - Zero - - 본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다. - 꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요. - - - 可以把本人的域名当分散式身份验证系统(OpenID)来使用。 - 必须在设置中输入openid provider相关值后再使用。 - - - This addon enables you to use your own domian name as an OpenID. - Just be sure to set the values related with openid provider before using. - - - Utliza su dominio para usar OpenID. - La configuración es necesario. - - - 保有するドメインをオープンIDとして活用することができます。必ず設定で、OpenIDのプロバイダー関連の情報を入力してから使用してください。 - - - - - server - server - server - Servidor - server - openid.server 값을 입력해 주세요. - 请输入 openid.server 值。 - Please input your openid.server value. - Servidor de OpenID. - openid.server の値を入力してください。 - - - delegate - delegate - delegate - Delegador - delegate - openid.delegate값을 입력해주세요. - 请输入 openid.delegate 值。 - Please input your openid.delegate value. - Delegador de OpenID - openid.delegate の値を入力してください。 - - - xrds - xrds - xrds - xrds - xrds - X-XRDS-Location값을 입력해주세요. - 请输入 X-XRDS-Location 值。 - Please input your X-XRDS-Location value. - ubicación de X-XRDS - X-XRDS-Location の値を入力してください。 - - - + + + OpenID delegation ID + OpenID + Addon for delegating domain name to OpenID + Delegación ID para OpenID + OpenID + + 제로 + zero + zero + zero + Zero + + 본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다. + 꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요. + + + 可以把本人的域名当分散式身份验证系统(OpenID)来使用。 + 必须在设置中输入openid provider相关值后再使用。 + + + This addon enables you to use your own domian name as an OpenID. + Just be sure to set the values related with openid provider before using. + + + Utliza su propio dominio para usar como OpenID. + Debe utilizar luego de ingresar los valores relacionado con openid provider a través de la configuracion. + + + 保有するドメインをオープンIDとして活用することができます。必ず設定で、OpenIDのプロバイダー関連の情報を入力してから使用してください。 + + + + + server + server + server + Servidor + server + openid.server 값을 입력해 주세요. + 请输入 openid.server 值。 + Please input your openid.server value. + Ingrese el valor del Servidor de OpenID. + openid.server の値を入力してください。 + + + delegate + delegate + delegate + delegado + delegate + openid.delegate값을 입력해주세요. + 请输入 openid.delegate 值。 + Please input your openid.delegate value. + Ingresar el valor del delegado de OpenID + openid.delegate の値を入力してください。 + + + xrds + xrds + xrds + xrds + xrds + X-XRDS-Location값을 입력해주세요. + 请输入 X-XRDS-Location 值。 + Please input your X-XRDS-Location value. + Ingresar el valor de X-XRDS-Location + X-XRDS-Location の値を入力してください。 + + + diff --git a/addons/point/conf/info.xml b/addons/point/conf/info.xml index f3c29dfcc..bccdbc41e 100644 --- a/addons/point/conf/info.xml +++ b/addons/point/conf/info.xml @@ -1,25 +1,30 @@ - - - 포인트 활성화 애드온 - 积分插件 - ポイントシステム - Addon for activating point - - 제로 - Zero - Zero - zero - - 포인트시스템 모듈에 설정된 내용을 바탕으로 글작성/삭제/댓글작성/삭제/파일업로드/삭제/다운로드등의 행동에 대해서 포인트를 기록합니다. - - - 以积分系统模块中设置的内容为基础,对发表/删除新帖,发表/删除评论,上传/下载/删除/文件等动作记录为积分。 - - - ポイントシステムモジュールで設定された内容を基に、書き込み作成・削除/コメント作成・削除/ファイルアップロード・削除/ダウンロードなどのユーザの活動に対してポイントを記録します。 - - - This addon records point on writing/deleting/adding comments/deleting comments/uploading/downloading following to point system module. - - - + + + 포인트 활성화 애드온 + 积分插件 + ポイントシステム + Addon for activating point + Addon para la activación de los puntos + + 제로 + Zero + Zero + zero + zero + + 포인트시스템 모듈에 설정된 내용을 바탕으로 글작성/삭제/댓글작성/삭제/파일업로드/삭제/다운로드등의 행동에 대해서 포인트를 기록합니다. + + + 以积分系统模块中设置的内容为基础,对发表/删除新帖,发表/删除评论,上传/下载/删除/文件等动作记录为积分。 + + + ポイントシステムモジュールで設定された内容を基に、書き込み作成・削除/コメント作成・削除/ファイルアップロード・削除/ダウンロードなどのユーザの活動に対してポイントを記録します。 + + + This addon records point on writing/deleting/adding comments/deleting comments/uploading/downloading following to point system module. + + + Este addon registra los puntos de acuerdo a la acción de escribir/borrar/agregar comentarios/borrar comentarios/subir_archivo/bajar_archivo, siguiendo el sistema de módulo de puntos. + + + diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index e198042a5..30a9b25b8 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -1,28 +1,34 @@ - - - 포인트 레벨 아이콘 표시 애드온 - 积分级别图标 - ポイントレベルアイコン - Addon for displaying level icon - - 제로 - Zero - Zero - zero - - 포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다. - 레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다. - - - 使用积分系统时,可以在用户名前显示级别图标。 - 级别图标可以在模块 > 积分系统中进行选择。 - - - ポイントシステムを使用している場合、ユーザ名の前にレベルアイコンを表示させます。レベルアイコンは、「モジュール>ポイントシステム」で選択できます。 - - - This addon displays level icon in front of user name when point system is using. - You can choose level icon on Module > Point System. - - - + + + 포인트 레벨 아이콘 표시 애드온 + 积分级别图标 + ポイントレベルアイコン + Addon for displaying level icon + Addon para mostar el nivel del icono + + 제로 + Zero + Zero + zero + zero + + 포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다. + 레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다. + + + 使用积分系统时,可以在用户名前显示级别图标。 + 级别图标可以在模块 > 积分系统中进行选择。 + + + ポイントシステムを使用している場合、ユーザ名の前にレベルアイコンを表示させます。レベルアイコンは、「モジュール>ポイントシステム」で選択できます。 + + + This addon displays level icon in front of user name when point system is using. + You can choose level icon on Module > Point System. + + + Este addon muestra el nivel del icono delante del nombre del usuario cuando es usado el sistema de puntos. + Tu puedes elegir el icono del nivel en el módulo > Sistema de Puntos. + + + diff --git a/addons/spamfilter/conf/info.xml b/addons/spamfilter/conf/info.xml index e7c7859ed..80c261282 100644 --- a/addons/spamfilter/conf/info.xml +++ b/addons/spamfilter/conf/info.xml @@ -1,34 +1,34 @@ - - - 스팸필터 애드온 - 垃圾过滤 - Addon for filtering spam - Adición Filtros para artículos no deseado - スパムフィルター - - 제로 - zero - zero - zero - Zero - - SpamFilter 모듈을 이용하여 글/코멘트/트랙백 등록 이전에 스팸 필터링 및 도배 방지를 합니다. - 자세한 설정은 " 스팸필터 모듈" 에서 해주세요. - - - 利用垃圾过滤模块在发表主题/评论/引用之前进行垃圾过滤。 - 请在" 垃圾过滤模块"中详细设置。 - - - This addon filters spam and prevents users from cluttering before saving entries, comments, or trackbacks to database by setting SpamFilter module. - You can set up more details on "Spam Filter module". - - - Utiliza SpamFilter para bloquear los artículos/ commentarios/ trackback no deseado. - Para configurar haga clic " Configurar la modula SpamFilter."..º - - - SpamFilterモジュールを利用して書き込み・コメント・トラックバックが登録される前にフィルタリングを行います。更に連続書き込みやロボットによる自動書き込みなどを防ぐことができます。詳細な設定は " スパムフィルターモジュール " で行ってください。 - - - + + + 스팸필터 애드온 + 垃圾过滤 + Addon for filtering spam + Addon para filtrar los Spam + スパムフィルター + + 제로 + zero + zero + zero + Zero + + SpamFilter 모듈을 이용하여 글/코멘트/트랙백 등록 이전에 스팸 필터링 및 도배 방지를 합니다. + 자세한 설정은 " 스팸필터 모듈" 에서 해주세요. + + + 利用垃圾过滤模块在发表主题/评论/引用之前进行垃圾过滤。 + 请在" 垃圾过滤模块"中详细设置。 + + + This addon filters spam and prevents users from cluttering before saving entries, comments, or trackbacks to database by setting SpamFilter module. + You can set up more details on "Spam Filter module". + + + Este addon filtra y previene de los artículos/ commentarios/ trackback no deseado antes de ser agregados. + Para la configuración más detallada, debe hacer en " Módulo de Filtro de Spam". + + + SpamFilterモジュールを利用して書き込み・コメント・トラックバックが登録される前にフィルタリングを行います。更に連続書き込みやロボットによる自動書き込みなどを防ぐことができます。詳細な設定は " スパムフィルターモジュール " で行ってください。 + + + diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index bf2db7f0a..ae653c048 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -205,7 +205,7 @@ $cache_file = sprintf('%s%s.cache.php', $this->cache_file, $query_id); // 없으면 원본 쿼리 xml파일을 찾아서 파싱을 한다 - if(!file_exists($cache_file)||filectime($cache_file)parse($query_id, $xml_file, $cache_file); diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index d8842423e..9624d0b70 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -244,7 +244,7 @@ function addIndex($table_name, $index_name, $target_columns, $is_unique = false) { if(!is_array($target_columns)) $target_columns = array($target_columns); - $query = sprintf("create %s index %s%s_%s on %s%s (%s);", $is_unique?'unique':'', $this->prefix, $table_name, $index_name, $this->prefix, $table_name, "'".implode("','",$target_columns)."'"); + $query = sprintf("create %s index %s on %s%s (%s);", $is_unique?'unique':'', $index_name, $this->prefix, $table_name, implode(',',$target_columns)); $this->_query($query); } @@ -252,7 +252,12 @@ * @brief 특정 테이블의 index 정보를 return **/ function isIndexExists($table_name, $index_name) { - return false; + $query = sprintf("select * from db_index where class_name='%s%s' and index_name = '%s' ", $this->prefix, $table_name, $index_name); + $result = $this->_query($query); + if($this->isError()) return false; + $output = $this->_fetch($result); + if(!$output) return false; + return true; } /** diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index dd883c682..a2eaf4c5e 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -260,12 +260,16 @@ * @brief 특정 테이블의 index 정보를 return **/ function isIndexExists($table_name, $index_name) { - $query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); + //$query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); + $query = sprintf("show indexes from %s%s", $this->prefix, $table_name); $result = $this->_query($query); if($this->isError()) return; $output = $this->_fetch($result); - if(!$output) return false; - return true; + + for($i=0;$iKey_name == $index_name) return true; + } + return false; } /** diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index 866ef2f36..8a06c8d4d 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -269,12 +269,16 @@ * @brief 특정 테이블의 index 정보를 return **/ function isIndexExists($table_name, $index_name) { - $query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); + //$query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); + $query = sprintf("show indexes from %s%s", $this->prefix, $table_name); $result = $this->_query($query); if($this->isError()) return; $output = $this->_fetch($result); - if(!$output) return false; - return true; + + for($i=0;$iKey_name == $index_name) return true; + } + return false; } /** diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index e6f8664a5..4af80538d 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -22,7 +22,12 @@ function printContent(&$oModule) { // gzip encoding 지원 여부 체크 - if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')!==false && function_exists('ob_gzhandler') ) $this->gz_enabled = true; + if( + (defined('__OB_GZHANDLER_ENABLE__') && __OB_GZHANDLER_ENABLE__ == 1) && + strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')!==false && + function_exists('ob_gzhandler') && + extension_loaded('zlib') + ) $this->gz_enabled = true; // header 출력 $this->_printHeader(); @@ -78,15 +83,14 @@ // 컨텐츠 출력 $this->display($output); - - // 디버깅 데이터 출력 - $this->_debugOutput(); } /** * @brief 최종 결과물의 출력 **/ function display($content) { + $content .= $this->_debugOutput(); + $path = str_replace('index.php','',$_SERVER['SCRIPT_NAME']); // files로 시작되는 src나 href의 값을 절대경로로 변경 @@ -163,7 +167,8 @@ * tail -f ./files/_debug_message.php로 하여 console로 확인하면 편리함\n **/ function _debugOutput() { - if(!__DEBUG__ || (__DEBUG_OUTPUT!=0 && Context::getResponseMethod()!='HTML') ) return; + if(!__DEBUG__ || Context::getResponseMethod()!='HTML' ) return; + $end = getMicroTime(); // debug string 작성 시작 @@ -207,6 +212,8 @@ // 전체 실행 시간 작성 $buff .= sprintf("\tTotal elapsed time \t\t: %0.5f sec", $end-__StartTime__); + if(__DEBUG_OUTPUT__==1) return $buff; + debugPrint($buff, false); } diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 5ab8262ad..19a4aa4d3 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -89,8 +89,8 @@ if(!$path_list[$i]) continue; $path .= $path_list[$i].'/'; if(!is_dir($path)) { - @mkdir($path, 0777); - @chmod($path, 0777); + @mkdir($path, 0755); + @chmod($path, 0755); } } diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 3f68d3d8a..8858c2f00 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -70,8 +70,8 @@ function _compile($tpl_file, $compiled_tpl_file) { if(!file_exists($compiled_tpl_file)) return $this->_compileTplFile($tpl_file, $compiled_tpl_file); - $source_ftime = filectime($tpl_file); - $target_ftime = filectime($compiled_tpl_file); + $source_ftime = filemtime($tpl_file); + $target_ftime = filemtime($compiled_tpl_file); if($source_ftime>$target_ftime) return $this->_compileTplFile($tpl_file, $compiled_tpl_file); } @@ -88,7 +88,7 @@ $buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff); // include 변경 - $buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff); + //$buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff); // 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 제로보드의 root경로부터 시작하도록 변경 $buff = preg_replace_callback('!(img|input)([^>]*)src=[\'"]{1}(.*?)[\'"]{1}!is', array($this, '_compileImgPath'), $buff); diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index c079ef8b6..005ee2398 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -24,8 +24,8 @@ $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, Context::getLangType()); if(!file_exists($cache_file)) return; - $filectime = filectime($cache_file); - if($filectime + $cache*60 < time()) return; + $filemtime= filemtime($cache_file); + if($filemtime + $cache*60 < time()) return; $output = FileHandler::readFile($cache_file); return $output; @@ -39,6 +39,8 @@ // 디버그를 위한 위젯 실행 시간 저장 if(__DEBUG__==3) $start = getMicroTime(); + if(!is_dir(sprintf('./widgets/%s/',$widget))) return; + // $widget의 객체를 받음 $oWidget = WidgetHandler::getObject($widget); diff --git a/classes/xml/XmlJsFilter.class.php b/classes/xml/XmlJsFilter.class.php index c01a5f9c5..08a140003 100644 --- a/classes/xml/XmlJsFilter.class.php +++ b/classes/xml/XmlJsFilter.class.php @@ -57,7 +57,7 @@ function compile() { if(!file_exists($this->xml_file)) return; if(!file_exists($this->js_file)) $this->_compile(); - else if(filectime($this->xml_file)>filectime($this->js_file)) $this->_compile(); + else if(filemtime($this->xml_file)>filemtime($this->js_file)) $this->_compile(); Context::addJsFile($this->js_file); } diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 616816a14..c108d3fc7 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -83,11 +83,11 @@ $lang->description = 'Description'; $lang->trackback = 'Trackback'; $lang->tag = 'Tag'; - $lang->allow_comment = 'Allow Comment'; - $lang->lock_comment = 'Block Comment'; - $lang->allow_trackback = 'Allow Trackback'; + $lang->allow_comment = 'Allow Comments'; + $lang->lock_comment = 'Block Comments'; + $lang->allow_trackback = 'Allow Trackbacks'; $lang->uploaded_file = 'Attachment'; - $lang->grant = 'Authority'; + $lang->grant = 'Permission'; $lang->target = 'Target'; $lang->total = 'Total'; $lang->total_count = 'Count Total'; @@ -105,7 +105,7 @@ $lang->colorset = 'Colorset'; $lang->extra_vars = 'Extra Vars'; - $lang->document_url = 'Entry URL'; + $lang->document_url = 'Article URL'; $lang->trackback_url = 'Trackback URL'; $lang->blog_name = 'Blog Title'; $lang->excerpt = 'Quotation'; @@ -113,7 +113,7 @@ $lang->document_count = 'Total Articles'; $lang->page_count = 'Page Count'; $lang->list_count = 'List Count'; - $lang->readed_count = 'Hit'; + $lang->readed_count = 'Hits'; $lang->voted_count = 'Votes'; $lang->member_count = 'Member Count'; $lang->date = 'Date'; @@ -134,7 +134,7 @@ $lang->layout_manager = 'Layout Settings'; $lang->use = 'Use'; - $lang->notuse = 'Disuse'; + $lang->notuse = 'Not use'; $lang->not_exists = "Does not exist"; $lang->unit_sec = 'sec'; @@ -146,14 +146,14 @@ $lang->unit_year = 'year'; // Descriptions - $lang->about_tag = 'You can submit multiple tags by inserting comma(,) between each tags'; - $lang->about_layout = 'Layouts decorate an appearance of your module. you could configure it from Layout menu on the top'; + $lang->about_tag = 'You can submit multiple tags by inserting commas(,) between each tag'; + $lang->about_layout = 'Layouts decorate the appearance of your modules. you can configure them from Layout menu on the top'; // Messages $lang->msg_call_server = 'Requesting to the server, please wait'; $lang->msg_db_not_setted = 'DB configuration has not been set'; $lang->msg_invalid_queryid = 'Specified query ID value is invalid'; - $lang->msg_not_permitted = 'You are not permitted to continue'; + $lang->msg_not_permitted = 'You do not have permission to access'; $lang->msg_input_password = 'Please enter your password'; $lang->msg_invalid_document = 'Invalid Article Number'; $lang->msg_invalid_request = 'Invalid Request'; @@ -162,7 +162,7 @@ $lang->msg_not_founded = 'Target could not be found'; $lang->msg_no_result = 'Nothing found'; - $lang->msg_not_permitted_act = 'You are not permitted to execute requested action'; + $lang->msg_not_permitted_act = 'You do not have permission to execute requested action'; $lang->msg_module_is_not_exists = 'Requested module could not be found'; $lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently'; @@ -173,12 +173,12 @@ $lang->success_moved = 'Moved successfully'; $lang->success_sended = 'Sent successfully'; $lang->success_reset = 'Reset successfully'; - $lang->success_leaved = 'Seceded successfully'; + $lang->success_leaved = 'All member data have been deleted completely.'; $lang->fail_to_delete = 'Could not be deleted'; $lang->fail_to_move = 'Could not be moved'; - $lang->failed_voted = 'Could not be voted'; + $lang->failed_voted = 'Could not vote'; $lang->fail_to_delete_have_children = 'Please try again after removing replies first'; $lang->confirm_submit = 'Are you sure to submit?'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 65e4023da..958e3faa4 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -1,220 +1,220 @@ -cmd_write = 'Escribir'; - $lang->cmd_reply = 'Contestación'; - $lang->cmd_delete = 'Cancelación'; - $lang->cmd_modify = 'Modificar'; - $lang->cmd_edit = 'Corregir'; - $lang->cmd_view = 'Ver'; - $lang->cmd_view_all = 'Ver Toda'; - $lang->cmd_list = 'List'; - $lang->cmd_prev = 'Prev'; - $lang->cmd_next = 'Adelante'; - $lang->cmd_send_trackback = 'Enviar Trackback'; - $lang->cmd_registration = $lang->cmd_submit = 'Someter'; - $lang->cmd_comment_registration = 'Agregar El Commentario'; - $lang->cmd_insert = 'Insertar'; - $lang->cmd_save = 'Guardar'; - $lang->cmd_input = 'Entrdada'; - $lang->cmd_search = 'Búsqueda'; - $lang->cmd_cancel = 'Cancelar'; - $lang->cmd_back = 'Ir Detrás'; - $lang->cmd_vote = 'Votar'; - $lang->cmd_move = 'Mover'; - $lang->cmd_move_up = 'Arriba'; - $lang->cmd_move_down = 'Abajo'; - $lang->cmd_add_indent = 'Agregar Pedido'; - $lang->cmd_remove_indent = 'Eliminar Pedido'; - $lang->cmd_management = 'Manejar'; - $lang->cmd_make = 'Crear'; - $lang->cmd_select = 'Seleccionar'; - $lang->cmd_select_all = 'Seleccionar Todos'; - $lang->cmd_unselect_all = 'Deseleccionar Todos'; - $lang->cmd_close_all = 'Cerrar Todos'; - $lang->cmd_open_all = 'Abrir Todos'; - $lang->cmd_reload = 'Actualizar'; - $lang->cmd_close = 'Cerrar'; - $lang->cmd_open = 'Abrir'; - $lang->cmd_setup = 'Configuración'; - $lang->cmd_option = 'Opción'; - $lang->cmd_apply = 'Applicar'; - $lang->cmd_open_calendar = 'Seleccionar la fecha'; - $lang->cmd_send = 'Enviar'; - $lang->cmd_print = 'Print'; - $lang->cmd_scrap = 'Scrap'; - $lang->cmd_preview = 'Preview'; - $lang->cmd_reset = 'Reset'; - - $lang->enable = 'Enable'; - $lang->disable = 'Disable'; - - // Essencial Words - $lang->no = 'No'; - $lang->notice = 'Aviso'; - $lang->secret = 'Secreto'; - $lang->category = 'Categoría'; - $lang->document_srl = 'Doc.Num'; - $lang->user_id = 'Usuario'; - $lang->author = 'Autor'; - $lang->password = 'Contraseña'; - $lang->password1 = 'Contraseña'; - $lang->password2 = 'Confirmar la Contraseña'; - $lang->admin_id = 'Identificación Del Admin'; - $lang->writer = 'Escritor'; - $lang->user_name = 'Nombre Del Usuario'; - $lang->nick_name = 'Nombre De la Mella'; - $lang->email_address = 'Correo Electrónico'; - $lang->homepage = 'Página web'; - $lang->blog = 'Blog'; - $lang->birthday = 'Fecha de Nacimiento'; - $lang->browser_title = 'Título del navegador'; - $lang->title = 'Título'; - $lang->title_content = 'Título+Contenido'; - $lang->content = 'Contenido'; - $lang->document = 'Entrada'; - $lang->comment = 'Commentario'; - $lang->description = 'Descripción'; - $lang->trackback = 'Trackback'; - $lang->tag = 'Etiqueta'; - $lang->allow_comment = 'Permitir Commentarios'; - $lang->lock_comment = 'Cerrar Commentarios'; - $lang->allow_trackback = 'Permitir Trackback'; - $lang->uploaded_file = 'Ajuntos'; - $lang->grant = 'Autoridad'; - $lang->target = 'Objetivo'; - $lang->total = 'Total'; - $lang->total_count = 'Visitos en Total'; - $lang->ipaddress = 'Dirección IP'; - $lang->path = 'Paso'; - $lang->cart = 'Artículo Selecciónado'; - $lang->friend = 'Amigos'; - $lang->notify = 'Notify'; - - $lang->mid = 'Module Name'; - $lang->layout = 'Layout'; - $lang->widget = 'Widget'; - $lang->module = 'Módulo'; - $lang->skin = 'Tema'; - $lang->colorset = 'Colección de colores'; - $lang->extra_vars = 'Variables Extra'; - - $lang->document_url = 'Entrada URL'; - $lang->trackback_url = 'Trackback URL'; - $lang->blog_name = 'Titulo del Blog'; - $lang->excerpt = 'Quotación'; - - $lang->document_count = 'Numeros de la Entradas'; - $lang->page_count = 'Cuentas de las Pagínas'; - $lang->list_count = 'Cuentas del Listos'; - $lang->readed_count = 'Cuentas Referidos'; - $lang->voted_count = 'Cuentas Votadas'; - $lang->member_count = 'Cuentas de Miembros'; - $lang->date = 'Fecha'; - $lang->regdate = 'Fecha Publicado'; - $lang->last_update = 'Última actualización'; - $lang->signup_date = 'Fecha Inscribido'; - $lang->last_login = 'Último Entrada'; - $lang->first_page = 'Primera Pagína'; - $lang->last_page = 'Última Pagína'; - $lang->search_target = 'Buscando Objectivo'; - $lang->search_keyword = 'Buscando Palabra Clave'; - $lang->is_default = 'Prefijado'; - - $lang->no_documents = 'No Entradas!'; - - $lang->board_manager = 'Configuración Tablón'; - $lang->member_manager = 'Configuración Miembros'; - $lang->layout_manager = 'Configuración Diseño'; - - $lang->use = 'Usar'; - $lang->notuse = 'Desusar'; - $lang->not_exists = 'No existe'; - - $lang->unit_sec = 'sec'; - $lang->unit_min = 'min'; - $lang->unit_hour = 'hr'; - $lang->unit_day = 'dia'; - $lang->unit_week = 'semana'; - $lang->unit_month = 'mes'; - $lang->unit_year = 'año'; - - // Related to Description - $lang->about_tag = 'cuando mecanografiar las etiquetas, insertando un comma() entre cada etiqueta permite que usted entre las etiquetas múltiples'; - $lang->about_layout = 'disposición adorna un aspecto de su módulo que usted podría configurarlo de menú de la disposición en la tapa'; - - // Related to Message - $lang->msg_call_server = 'Solicitando al servidor, espere por favor'; - $lang->msg_db_not_setted = 'No tiene la Configuración del DB'; - $lang->msg_invalid_queryid = 'El valor de Query ID especificado mal'; - $lang->msg_not_permitted = 'Usted no tiene permiso'; - $lang->msg_input_password = 'Por favor escribe sus contraseña'; - $lang->msg_invalid_document = 'Numero de entrada invalido'; - $lang->msg_invalid_request = 'Requesta Invalido'; - $lang->msg_invalid_password = 'Contraseñn Invalido'; - $lang->msg_error_occured = 'Occurrido Errores'; - $lang->msg_not_founded = 'Objetivo no encontrado'; - $lang->msg_no_result = 'Esta búsqueda no hay resultado'; - - $lang->msg_not_permitted_act = 'Usted no tiene permiso para ejecutar la action'; - $lang->msg_module_is_not_exists = 'No podía encontrar el modulo que usted solicitado'; - $lang->msg_module_is_not_standalone = 'El modulo usted solicitado no puede ejecutado independientemente'; - - $lang->success_registed = 'Registrado con Éxito'; - $lang->success_updated = 'Actualizado con Éxito'; - $lang->success_deleted = 'Boarrado con Éxito'; - $lang->success_voted = 'Votado con Éxito'; - $lang->success_moved = 'Movido con Éxito'; - $lang->success_sended = 'Enviado con Éxito'; - $lang->success_reset = 'Reajustado con Éxito'; - $lang->success_leaved = 'Abandonó con Éxito'; - - $lang->fail_to_delete = 'Supresión Fallada'; - $lang->fail_to_move = 'Mover Fallada'; - - $lang->failed_voted = 'No podía ser votado'; - $lang->fail_to_delete_have_children = 'Supresión Fallda. Hay unas o más contestaciones'; - - $lang->confirm_submit = 'Confirmar para someter?'; - $lang->confirm_logout = 'Confirmar para salir?'; - $lang->confirm_vote = 'Confirmar para voto?'; - $lang->confirm_delete = 'Confirmar de supresión?'; - $lang->confirm_move = 'Confirmar para Movido?'; - $lang->confirm_reset = 'Confirmar para reajustar?'; - $lang->confirm_leave = 'Confirmar para Éxito?'; - - $lang->column_type = 'Tipo de la Columna'; - $lang->column_type_list['text'] = 'Texto una linea'; - $lang->column_type_list['homepage'] = 'url'; - $lang->column_type_list['email_address'] = 'Correo Electrónico'; - $lang->column_type_list['tel'] = 'Numero de fono'; - $lang->column_type_list['textarea'] = 'Texto multi-linea'; - $lang->column_type_list['checkbox'] = 'checkbox (selecciónes multiples)'; - $lang->column_type_list['select'] = 'select box (selección singlar)'; - //$lang->column_type_list['kr_zip'] = 'zip code (Korean)'; - $lang->column_type_list['date'] = 'fecha (dd/mm/aaaa)'; - //$lang->column_type_list['jp_zip'] = 'zip code (Japanese)'; - $lang->column_name = 'Nombre de la Columna'; - $lang->column_title = 'Título de la Columna'; - $lang->default_value = 'Valor Prefijado'; - $lang->is_active = 'Activado'; - $lang->is_required = 'Entrada Necesario'; - - // Alert messages for Javascript using by XML filter - $lang->filter->isnull = 'Entrar un valor para %s'; - $lang->filter->outofrange = 'Alinear el lenghth del texto de %s'; - $lang->filter->equalto = 'Valor inválido asignado para %s'; - $lang->filter->invalid_email = '%s es formateo inválido (eg. zbxe@zeroboard.com)'; - $lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s es formeto inválido.\\nTomas letras, números, y el underbar(ingleses _) de cuál debe comenzar con las letras Alfabeto"; - $lang->filter->invalid_homepage = '%s es formateo inválido. (?: http://www.zeroboard.com)'; - $lang->filter->invalid_korean = '%s got an invalid format. Solo aceptan las letras Coreanas'; - $lang->filter->invalid_korean_number = '%s es formateo inválido. Solamente combinación de letras y de números coreanos se acepta'; - $lang->filter->invalid_alpha = '%s es formateo inválido. Solamente se aceptan las alfabeto'; - $lang->filter->invalid_alpha_number = '%s es formateo inválido. Solamente se aceptan las alfabeto y números'; - $lang->filter->invalid_number = '%s es formateo inválido. Solo aceptan los números.'; -?> +cmd_write = 'Escribir'; + $lang->cmd_reply = 'Respuesta'; + $lang->cmd_delete = 'Borrar'; + $lang->cmd_modify = 'Modificar'; + $lang->cmd_edit = 'editar'; + $lang->cmd_view = 'Ver'; + $lang->cmd_view_all = 'Ver todo'; + $lang->cmd_list = 'Lista'; + $lang->cmd_prev = 'Anterior'; + $lang->cmd_next = 'Siguiente'; + $lang->cmd_send_trackback = 'Enviar Trackback'; + $lang->cmd_registration = $lang->cmd_submit = 'Enviar'; + $lang->cmd_comment_registration = 'Agregar el commentario'; + $lang->cmd_insert = 'Insertar'; + $lang->cmd_save = 'Guardar'; + $lang->cmd_input = 'Ingresar'; + $lang->cmd_search = 'Buscar'; + $lang->cmd_cancel = 'Cancelar'; + $lang->cmd_back = 'Atrás'; + $lang->cmd_vote = 'Recomendar'; + $lang->cmd_move = 'Mover'; + $lang->cmd_move_up = 'Arriba'; + $lang->cmd_move_down = 'Abajo'; + $lang->cmd_add_indent = 'Agregar'; + $lang->cmd_remove_indent = 'Eliminar'; + $lang->cmd_management = 'Administración'; + $lang->cmd_make = 'Crear'; + $lang->cmd_select = 'Seleccionar'; + $lang->cmd_select_all = 'Seleccionar todo'; + $lang->cmd_unselect_all = 'Cancelar todo'; + $lang->cmd_close_all = 'Cerrar todo'; + $lang->cmd_open_all = 'Abrir todo'; + $lang->cmd_reload = 'Actualizar'; + $lang->cmd_close = 'Cerrar'; + $lang->cmd_open = 'Abrir'; + $lang->cmd_setup = 'Configuración'; + $lang->cmd_option = 'Opción'; + $lang->cmd_apply = 'Aplicar'; + $lang->cmd_open_calendar = 'Abrir el calendario'; + $lang->cmd_send = 'Enviar'; + $lang->cmd_print = 'Imprimir'; + $lang->cmd_scrap = 'Scrap'; + $lang->cmd_preview = 'Previo'; + $lang->cmd_reset = 'Rehacer'; + + $lang->enable = 'Activar'; + $lang->disable = 'Desactivar'; + + // Palabras Esenciales + $lang->no = 'No'; + $lang->notice = 'Aviso'; + $lang->secret = 'Secreto'; + $lang->category = 'Categoría'; + $lang->document_srl = 'Núm.Mensaje'; + $lang->user_id = 'Usuario'; + $lang->author = 'Autor'; + $lang->password = 'Contraseña'; + $lang->password1 = 'Contraseña'; + $lang->password2 = 'Confirmar la contraseña'; + $lang->admin_id = 'Identificación del Administrador'; + $lang->writer = 'Autor'; + $lang->user_name = 'Nombre De Usuario'; + $lang->nick_name = 'Apodo'; + $lang->email_address = 'Correo electrónico'; + $lang->homepage = 'Página web'; + $lang->blog = 'Blog'; + $lang->birthday = 'Fecha de Nacimiento'; + $lang->browser_title = 'Título del navegador'; + $lang->title = 'Título'; + $lang->title_content = 'Título+Contenido'; + $lang->content = 'Contenido'; + $lang->document = 'Mensaje'; + $lang->comment = 'Commentario'; + $lang->description = 'Descripción'; + $lang->trackback = 'Trackback'; + $lang->tag = 'Etiqueta'; + $lang->allow_comment = 'Permitir Commentarios'; + $lang->lock_comment = 'Bloquear Commentarios'; + $lang->allow_trackback = 'Permitir Trackback'; + $lang->uploaded_file = 'Archivos Ajuntos'; + $lang->grant = 'Atribución'; + $lang->target = 'Objetivo'; + $lang->total = 'Total'; + $lang->total_count = 'Núm.Total'; + $lang->ipaddress = 'Dirección IP'; + $lang->path = 'Paso'; + $lang->cart = 'Artículo Seleccionado'; + $lang->friend = 'Amigos'; + $lang->notify = 'Notificación'; + + $lang->mid = 'Nombre del Módulo'; + $lang->layout = 'Diseño'; + $lang->widget = 'Herramienta'; + $lang->module = 'Módulo'; + $lang->skin = 'Tema'; + $lang->colorset = 'Colores'; + $lang->extra_vars = 'Variables Extra'; + + $lang->document_url = 'URL del Mensaje'; + $lang->trackback_url = 'URL del Trackback'; + $lang->blog_name = 'Titulo del Blog'; + $lang->excerpt = 'Extracción'; + + $lang->document_count = 'Cantidad del Mensaje'; + $lang->page_count = 'Cantidad de la Página'; + $lang->list_count = 'Cantidad de la Lista'; + $lang->readed_count = 'Leídos'; + $lang->voted_count = 'Recomendados'; + $lang->member_count = 'Cantidad del Usuario'; + $lang->date = 'Fecha'; + $lang->regdate = 'Fecha Publicada'; + $lang->last_update = 'Última actualización'; + $lang->signup_date = 'Fecha del Registro'; + $lang->last_login = 'Última Conección'; + $lang->first_page = 'Primera Página'; + $lang->last_page = 'Última Página'; + $lang->search_target = 'Buscar Objectivo'; + $lang->search_keyword = 'Buscar la Palabra Clave'; + $lang->is_default = 'Prefijado'; + + $lang->no_documents = 'Sin Mensajes'; + + $lang->board_manager = 'Manejo de los Tableros'; + $lang->member_manager = 'MAnejo de los usuarios'; + $lang->layout_manager = 'MAnejo de los Diseños'; + + $lang->use = 'Usar'; + $lang->notuse = 'No usar'; + $lang->not_exists = 'No existe'; + + $lang->unit_sec = 'segundo'; + $lang->unit_min = 'minuto'; + $lang->unit_hour = 'hora'; + $lang->unit_day = 'día'; + $lang->unit_week = 'semana'; + $lang->unit_month = 'mes'; + $lang->unit_year = 'año'; + + // Relacionado a la Descripción + $lang->about_tag = 'Tú puedes agregar múltiples etiquetas colocando una coma(,) entre cada etiqueta'; + $lang->about_layout = 'El diseño decora la apariencia de tus módulos, lo cual podrás configurar en el menú Diseño en la parte superior'; + + // Relacionado al Mensaje + $lang->msg_call_server = 'Solicitando al servidor, espere por favor'; + $lang->msg_db_not_setted = 'Configuración de DB no ha sido creado'; + $lang->msg_invalid_queryid = 'El valor de Query ID especificado es inválido'; + $lang->msg_not_permitted = 'Acceso denegado'; + $lang->msg_input_password = 'Coloque la contraseña'; + $lang->msg_invalid_document = 'Mensaje inválido'; + $lang->msg_invalid_request = 'Respuesta Inválida'; + $lang->msg_invalid_password = 'Contraseña Inválida'; + $lang->msg_error_occured = 'Error'; + $lang->msg_not_founded = 'No encontrado'; + $lang->msg_no_result = 'Sin resultados'; + + $lang->msg_not_permitted_act = 'Usted no tiene permiso para ejecutar la action solicitada'; + $lang->msg_module_is_not_exists = 'Módulo solicitado no puede ser encontrado'; + $lang->msg_module_is_not_standalone = 'Módulo solicitado no puede ser ejecutado independientemente'; + + $lang->success_registed = 'Registrado con éxito'; + $lang->success_updated = 'Actualizado con éxito'; + $lang->success_deleted = 'Boarrado con éxito'; + $lang->success_voted = 'Recomendado con éxito'; + $lang->success_moved = 'Movido con éxito'; + $lang->success_sended = 'Enviado con éxito'; + $lang->success_reset = 'Reajustado con éxito'; + $lang->success_leaved = 'Abandonó con éxito'; + + $lang->fail_to_delete = 'No puede ser borrado'; + $lang->fail_to_move = 'No puede ser movido'; + + $lang->failed_voted = 'No puede ser recomendado'; + $lang->fail_to_delete_have_children = 'No puede ser borrados, ya que el mensaje posee respuestas '; + + $lang->confirm_submit = 'Estás seguro que deseas enviar?'; + $lang->confirm_logout = 'Estás seguro que deseas desconectar?'; + $lang->confirm_vote = 'Estás seguro que deseas recomendar?'; + $lang->confirm_delete = 'Estás seguro que deseas borrar?'; + $lang->confirm_move = 'Estás seguro que deseas mover?'; + $lang->confirm_reset = 'Estás seguro que deseas rehacer?'; + $lang->confirm_leave = 'Estás seguro que deseas salir?'; + + $lang->column_type = 'Tipos de Columnas'; + $lang->column_type_list['text'] = 'Texto de una linea'; + $lang->column_type_list['homepage'] = 'url'; + $lang->column_type_list['email_address'] = 'Correo Electrónico'; + $lang->column_type_list['tel'] = 'Número de teléfono'; + $lang->column_type_list['textarea'] = 'Texto multi-linea'; + $lang->column_type_list['checkbox'] = 'Cuadro de chequeo (selecciónes múltiples)'; + $lang->column_type_list['select'] = 'Cuadro de selección (selección individual)'; + //$lang->column_type_list['kr_zip'] = 'zip code (Korean)'; + $lang->column_type_list['date'] = 'fecha (dd/mm/aaaa)'; + //$lang->column_type_list['jp_zip'] = 'zip code (Japanese)'; + $lang->column_name = 'Nombre de la Columna'; + $lang->column_title = 'Título de la Columna'; + $lang->default_value = 'Valor Prefijado'; + $lang->is_active = 'Activado'; + $lang->is_required = 'Campo requerido'; + + // Mensajes de alerta para Javascript usando el filtro XML + $lang->filter->isnull = 'Por favor ingresar un valor para %s'; + $lang->filter->outofrange = 'Por favor alinear el largo del texto de %s'; + $lang->filter->equalto = 'Valor de %s es inválido.'; + $lang->filter->invalid_email = 'Formato de %s es inválido. (ej. zbxe@zeroboard.com)'; + $lang->filter->invalid_user_id = $lang->filter->invalid_userid = "Formato de %s es inválido.\\n Todos los valores deberá consistir en alfabetos, números o guión abajo(_) y la primera letra deberá ser el alfabeto Español"; + $lang->filter->invalid_homepage = 'Formato de %s es inválido. (ej: http://www.zeroboard.com)'; + $lang->filter->invalid_korean = 'Formato de %s es inválido. Por favor ingresar sólo coreano'; + $lang->filter->invalid_korean_number = 'Formato de %s es inválido. Por favor ingresar coreano o números'; + $lang->filter->invalid_alpha = 'Formato de %s es inválido. Por favor ingresar sólo alfabetos'; + $lang->filter->invalid_alpha_number = 'Formato de %s es inválido. Por favor ingresar alfabetos o números'; + $lang->filter->invalid_number = 'Formato de %s es inválido. Por favor ingresar sólo números.'; +?> diff --git a/config/config.inc.php b/config/config.inc.php index 1ffc8fab1..f52ae2d9d 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -7,6 +7,15 @@ if(!defined('__ZBXE__')) exit(); + /** + * @brief 디버깅 메세지 출력 + * 0 : 디버그 메세지를 생성/ 출력하지 않음 + * 1 : 전체 실행 시간에 대해서만 메세지 생성/ 출력 + * 2 : 1 + DB 쿼리 + * 3 : 모든 로그 + **/ + define('__DEBUG__', 0); + /** * @brief 디버그 메세지의 출력 장소 * 0 : files/_debug_message.php 에 연결하여 출력 @@ -22,13 +31,12 @@ define('__DEBUG_DB_OUTPUT__', 0); /** - * @brief 디버깅 메세지 출력 - * 0 : 디버그 메세지를 생성/ 출력하지 않음 - * 1 : 전체 실행 시간에 대해서만 메세지 생성/ 출력 - * 2 : 1 + DB 쿼리 - * 3 : 모든 로그 + * @brief ob_gzhandler를 이용한 압축 기능을 강제로 사용하거나 끄는 옵션 + * 0 : 사용하지 않음 + * 1 : 사용함 + * 대부분의 서버에서는 문제가 없는데 특정 서버군에서 압축전송시 IE에서 오동작을 일으키는경우가 있음 **/ - define('__DEBUG__', 0); + define('__OB_GZHANDLER_ENABLE__', 1); /** * @brief 간단하게 사용하기 위한 함수 정의한 파일 require diff --git a/config/func.inc.php b/config/func.inc.php index b5f804627..a2c30d361 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -357,7 +357,23 @@ // script code 제거 $content = preg_replace("!!is","",$content); + + // 제로보드XE전용 주석 태그를 본문에서 제거 + $content = preg_replace('!<\!--(Before|After)Document\(([0-9]+),([0-9]+)\)-->!is', '', $content); + return $content; } + // hexa값을 RGB로 변환 + if(!function_exists('hexrgb')) { + function hexrgb($hexstr) { + $int = hexdec($hexstr); + + return array("red" => 0xFF & ($int >> 0x10), + "green" => 0xFF & ($int >> 0x8), + "blue" => 0xFF & $int); + } + + } + ?> diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml index c78a24bb4..5e9c9bbe9 100644 --- a/layouts/xe_official/conf/info.xml +++ b/layouts/xe_official/conf/info.xml @@ -1,124 +1,137 @@ - - - ZBXE 공식 사이트 레이아웃 - ZBXEオフィシャルレイアウト - ZBXE Official website layout - ZBXE 官方网站布局 - - zero - Zero - zero - zero - - 제로보드XE 공식 사이트 레이아웃입니다. - 디자인 : 이소라 - 퍼블리싱 : 정찬명 - 레이아웃 제작 : zero - - - ゼロボードXEのオフィシャルサイトのレイアウトです。 - デザイン:イソラ - パブリシング:ジョンチャンミョン - レイアウト作成:Zero - - - This layout is the Zeroboard XE Official website layout. - Designer : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - Layout producer : zero - - - ZBXE 官方网站布局。 - 设计 : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - 布局 : zero - - - - - 컬러셋 - カラーセット - 颜色 - Colorset - colecciónes de colores - 원하시는 컬러셋을 선택해주세요. - 希望する色を選択してください。 - 请选择颜色。 - Please select a colorset you want. - Seleccióne la colección de colores. - - 기본 - デフォルト - Basic - 默认 - default - - - 검은색 - - Black - 黑色 - black - - - 하얀색 - - white - 白色 - white - - - - 로고이미지 - ロゴのイメージ - LOGO图片 - Logo image - Imagen de logotipo - 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 100px인 투명이미지가 가장 어울립니다) - レイアウトの上端に表示されるロゴイメージを入力してください。 (縦幅が100pxである透明イメージが最も合います。) - 请输入显示在布局顶部的LOGO图片。(高度为100px的透明图片为适。) - Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 100px is recommended.) - Cargar archivo para logotipo. (Mejor imagen transparente con altura de 100px) - - - 홈 페이지 URL - ホームページ URL - 网站 URL - Homepage URL - URL de logotipo - 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. - ロゴをクリックした時に移動するホームページのURLを入力してください。 - 点击网站LOGO时要移动的页面URL。 - Please input the URL to redirect when user clicks the logo - Escribe URL para mover cuando los usuarios haga clic en logotipo. - - - 배경 이미지 - 背景イメージ - 背景图片 - Background Image - 배경 이미지를 사용하시려면 등록해주세요. - 背景イメージを使う場合は、登録してください。 - 要想使用背景图片请在这里上传。 - Please input if you want to use background image. - - - - - 상단 메뉴 - 上端メニュー - 主菜单 - Top menu - Menu Principal - 3 - - - 하단 메뉴 - 下段メニュー - 底部菜单 - Bottom menu - sub menu - 1 - - - + + + ZBXE 공식 사이트 레이아웃 + ZBXEオフィシャルレイアウト + ZBXE Official website layout + Diseño oficial de la página web de ZBXE + ZBXE 官方网站布局 + + zero + Zero + zero + zero + zero + + 제로보드XE 공식 사이트 레이아웃입니다. + 디자인 : 이소라 + 퍼블리싱 : 정찬명 + 레이아웃 제작 : zero + + + ゼロボードXEのオフィシャルサイトのレイアウトです。 + デザイン:イソラ + パブリシング:ジョンチャンミョン + レイアウト作成:Zero + + + This layout is the Zeroboard XE Official website layout. + Designer : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + Layout producer : zero + + + Este diseño is el diseño oficial de la página web de Zerobard XE. + Deseñador : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + Productor del diseño : zero + + + ZBXE 官方网站布局。 + 设计 : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + 布局 : zero + + + + + 컬러셋 + カラーセット + 颜色 + Colorset + Set de colores + 원하시는 컬러셋을 선택해주세요. + 希望する色を選択してください。 + 请选择颜色。 + Please select a colorset you want. + Seleccione set de colores que tu deseas. + + 기본 + デフォルト + Basic + Básico + 默认 + default + + + 검은색 + + Black + Negro + 黑色 + black + + + 하얀색 + + white + Blanco + 白色 + white + + + + 로고이미지 + ロゴのイメージ + LOGO图片 + Logo image + Imagen del logotipo + 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 100px인 투명이미지가 가장 어울립니다) + レイアウトの上端に表示されるロゴイメージを入力してください。 (縦幅が100pxである透明イメージが最も合います。) + 请输入显示在布局顶部的LOGO图片。(高度为100px的透明图片为适。) + Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 100px is recommended.) + Ingresar una imagen para logotipo. ( Se recomienda una imagen de fondo transparente con una altura de 100px. + + + 홈 페이지 URL + ホームページ URL + 网站 URL + Homepage URL + URL de la página web + 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. + ロゴをクリックした時に移動するホームページのURLを入力してください。 + 点击网站LOGO时要移动的页面URL。 + Please input the URL to redirect when user clicks the logo + Ingresar el URL de la página web al pulsar el logotipo + + + 배경 이미지 + 背景イメージ + 背景图片 + Background Image + Imagen de Fondo + 배경 이미지를 사용하시려면 등록해주세요. + 背景イメージを使う場合は、登録してください。 + 要想使用背景图片请在这里上传。 + Please input if you want to use background image. + Ingresar imagen de fondo si deseas usar. + + + + + 상단 메뉴 + 上端メニュー + 主菜单 + Top menu + Menú Principal + 3 + + + 하단 메뉴 + 下段メニュー + 底部菜单 + Bottom menu + Menú Inferior + 1 + + + diff --git a/modules/addon/conf/info.xml b/modules/addon/conf/info.xml index 299b9a9b5..ea09b83cd 100644 --- a/modules/addon/conf/info.xml +++ b/modules/addon/conf/info.xml @@ -15,7 +15,7 @@ Zero 애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다. This module is for maintaining addons which can toggle use and disuse states. - La Modula para applicar o desapplicar addionales + Módulo para agrear Addon, como también el manejo de ellas. 登录插件或设置启用/禁用插件的管理模块。 アドオンの「登録、使用、未使用」などを設定するための管理モジュールです。 Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. diff --git a/modules/addon/lang/en.lang.php b/modules/addon/lang/en.lang.php index 42ad03c52..e7bbedf60 100644 --- a/modules/addon/lang/en.lang.php +++ b/modules/addon/lang/en.lang.php @@ -11,5 +11,5 @@ $lang->addon_maker = 'Author of this Addon'; $lang->addon_history = 'Addon History'; - $lang->about_addon = 'Addon is for controling actions rather than displaying the HTML results.
Simply by toggling any addons you want on or off, you can use very useful functions to administer your website'; + $lang->about_addon = 'Addon is for controlling actions rather than displaying the HTML results.
Simply by toggling any addons you want on or off, you can use very useful functions to administer your website'; ?> diff --git a/modules/addon/lang/es.lang.php b/modules/addon/lang/es.lang.php index d920e7843..0c17133b0 100644 --- a/modules/addon/lang/es.lang.php +++ b/modules/addon/lang/es.lang.php @@ -1,15 +1,17 @@ -addon = "Adiciónales"; - - $lang->addon_info = 'Información de Adiciónales'; - $lang->addon_maker = 'Autor'; - $lang->addon_history = 'Historia de modificación '; - - $lang->about_addon = 'Adiciónales más coltrola acciónes que salida de HTML.
Solo encendir o apagar los adiciónales puede utilizar los funciónes útiles de manejar el sitio.'; -?> +addon = "Addon"; + + $lang->addon_info = 'Información de Adson'; + $lang->addon_maker = 'Autor de Addon'; + $lang->addon_history = 'Historia de Addon '; + + $lang->about_addon = 'Addon is para controlar las acciones y no para mostrar el resultado HTML.
Sólo con encender o apagar el addon que dese, podrá obtener funciones útiles para la administracion de tu sitio web.'; +?> + + diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index f8c2bab9e..dc660fe2b 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -51,7 +51,7 @@ $cache_file = sprintf("./files/cache/newest_news.%s.cache.php", Context::getLangType()); // 1시간 단위로 캐싱 체크 - if(!file_exists($cache_file) || filectime($cache_file)+ 60*60 < time()) { + if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) { FileHandler::getRemoteFile($newest_news_url, $cache_file); } if(file_exists($cache_file)) { diff --git a/modules/admin/conf/info.xml b/modules/admin/conf/info.xml index fc9394da9..e3f3c93b2 100644 --- a/modules/admin/conf/info.xml +++ b/modules/admin/conf/info.xml @@ -1,20 +1,20 @@ - - - 관리자 모듈 - Administrator Module - Modules de administración - 管理员模块 - 管理者用モジュール - - 제로 - zero - zero - zero - Zero - 각 모듈들의 기능을 나열하고 관리자용 레이아웃을 적용하여 관리 기능을 사용할 수 있도록 하는 모듈입니다. - This module shows a list of features of each module, and enables you to use a quite few of managers by applying layout for administrator. - Lista las los funciónes de modules y aplica diseño de administración para manejar sitio. - 列出各模块的功能并使用管理员布局,可以让其使用管理功能的模块。 - 各モジュールの機能を羅列し、管理者用のレイアウトを適用させ、管理機能が使用できるようにするモジュールです。 - - + + + 관리자 모듈 + Administrator Module + Módulo del administrador + 管理员模块 + 管理者用モジュール + + 제로 + zero + zero + zero + Zero + 각 모듈들의 기능을 나열하고 관리자용 레이아웃을 적용하여 관리 기능을 사용할 수 있도록 하는 모듈입니다. + This module shows a list of features of each module, and enables you to use a quite few of managers by applying layout for administrator. + Este módulo muestra una lista de características de cada módulo, en donde puede activar la función de administracion aplicando el diseño del administrador. + 列出各模块的功能并使用管理员布局,可以让其使用管理功能的模块。 + 各モジュールの機能を羅列し、管理者用のレイアウトを適用させ、管理機能が使用できるようにするモジュールです。 + + diff --git a/modules/admin/lang/en.lang.php b/modules/admin/lang/en.lang.php index a247ad83d..d185a1f19 100644 --- a/modules/admin/lang/en.lang.php +++ b/modules/admin/lang/en.lang.php @@ -21,7 +21,7 @@ $lang->table_count = "Number of Table"; $lang->installed_path = "Installed Path"; - $lang->cmd_shortcut_management = "Edit Menues"; + $lang->cmd_shortcut_management = "Edit Menu"; $lang->msg_is_not_administrator = 'Administrator only'; $lang->msg_manage_module_cannot_delete = 'Shortcuts of module, addon, layout, widget cannot be removed'; diff --git a/modules/admin/lang/es.lang.php b/modules/admin/lang/es.lang.php index 5c1961e1f..e03ba30ac 100644 --- a/modules/admin/lang/es.lang.php +++ b/modules/admin/lang/es.lang.php @@ -1,66 +1,70 @@ -item_module = "Lista de Módulos"; - $lang->item_addon = "Lista de Adiciónales"; - $lang->item_widget = "Lista de Widget"; - $lang->item_layout = "Liasta de Diseño"; - - $lang->module_name = "Nombre de Módulo"; - $lang->addon_name = "Nombre de Adición"; - $lang->version = "Versión"; - $lang->author = "Autor"; - $lang->table_count = "Numero de Tablos"; - $lang->installed_path = "Paso de instalación"; - - $lang->cmd_shortcut_management = "Modificar Menú"; - - $lang->msg_is_not_administrator = 'Solo administrador puede entrar.'; - $lang->msg_manage_module_cannot_delete = 'No puede eliminar acceso directo de Módulos, Adiciónales, Diseño y Widget.'; - $lang->msg_default_act_is_null = 'No puede registrar acceso directo por acción de administrador determinado no esta registrado.'; - - $lang->welcome_to_zeroboard_xe = 'Esto es Pagina de Administrador de ZeroBoard XE'; - $lang->about_admin_page = "El pagina de Administración no esta listo."; - - $lang->zeroboard_xe_user_links = 'Enlace para usuarios '; - $lang->zeroboard_xe_developer_links = 'Enlace para desarrolladores'; - - $lang->xe_user_links = array( - 'Pagina de web oficial' => 'http://www.zeroboard.com', - //'Sitio para beta cerrado' => 'http://spring.zeroboard.com', - //'Depósitorio de Módulos´ => 'http://www.zeroboard.com', - //'Depósitorio de Adiciónales' => 'http://www.zeroboard.com', - //'Depósitorio de Widgets' => 'http://www.zeroboard.com', - //'Depósitorio de carátulas de módulos' => 'http://www.zeroboard.com', - //'Depósitorio de carátulas de widget' => 'http://www.zeroboard.com', - //'Depósitorio de carátulas de diseño' => 'http://www.zeroboard.com', - ); - - $lang->xe_developer_links = array( - //'Manuales' => 'http://www.zeroboard.com/wiki/manual', - 'Foro Abierto de desarrolladores' => 'http://spring.zeroboard.com', - 'Huellas de distribuciónes' => 'http://trac.zeroboard.com', - 'Repositor de SVN' => 'http://svn.zeroboard.com', - 'doxygen document' => 'http://doc.zeroboard.com', - 'Documentación en PDF' => 'http://doc.zeroboard.com/zeroboard_xe.pdf', - ); - - $lang->zeroboard_xe_usefulness_module = 'Módulos útiles'; - $lang->xe_usefulness_modules = array( - 'dispEditorAdminIndex' => 'Manejar Editor', - 'dispDocumentAdminList' => 'Manejar Documentos', - 'dispCommentAdminList' => 'Manejar Commentarios', - 'dispFileAdminList' => 'Manejar archivos', - 'dispPollAdminList' => 'Manejar votaciónes', - 'dispSpamfilterAdminConfig' => 'Manejar SpamFilter', - 'dispCounterAdminIndex' => 'Manejar archivo de registro de taquilla', - - ); - - $lang->xe_license = 'ZeroBoard XE esta en bajo de Licencia GPL'; - $lang->about_shortcut = 'Puede Eliminar acceso directo de módulos'; -?> +newest_news = "Nuevas Noticias"; + + $lang->env_setup = "Configuración"; + + $lang->item_module = "Lista de Módulo"; + $lang->item_addon = "Lista de Addon"; + $lang->item_widget = "Lista de Widget"; + $lang->item_layout = "Liasta de Diseño"; + + $lang->module_name = "Nombre de Módulo"; + $lang->addon_name = "Nombre de Addon"; + $lang->version = "Versión"; + $lang->author = "Autor"; + $lang->table_count = "Número de Tabla"; + $lang->installed_path = "Ruta de instalación"; + + $lang->cmd_shortcut_management = "Editar el Menú"; + + $lang->msg_is_not_administrator = 'Sólo administrador puede entrar.'; + $lang->msg_manage_module_cannot_delete = 'No se puede eliminar acceso directo de Módulo, Addon, Diseño y Widget.'; + $lang->msg_default_act_is_null = 'No se puede registrar acceso directo por no estar determinado la acción del administrador por defecto.'; + + $lang->welcome_to_zeroboard_xe = 'Esta es la página del Administrador de Zeroboard XE'; + $lang->about_admin_page = "La página del Administrador aún está en desarrollo."; + + $lang->zeroboard_xe_user_links = 'Enlaces para los usuarios '; + $lang->zeroboard_xe_developer_links = 'Enlace para los desarrolladores'; + + $lang->xe_user_links = array( + 'Página web oficial' => 'http://www.zeroboard.com', + //'Sitio versión beta' => 'http://spring.zeroboard.com', + //'Más Módulos´ => 'http://www.zeroboard.com', + //'Más Addon' => 'http://www.zeroboard.com', + //'Más Widgets' => 'http://www.zeroboard.com', + //'Más temas de módulos' => 'http://www.zeroboard.com', + //'Más temas de widget' => 'http://www.zeroboard.com', + //'Más temas de diseño' => 'http://www.zeroboard.com', + ); + + $lang->xe_developer_links = array( + //'Manuales' => 'http://www.zeroboard.com/wiki/manual', + 'Foro Abierto para los desarrolladores' => 'http://spring.zeroboard.com', + 'Huellas de distribuciones' => 'http://trac.zeroboard.com', + 'Repositorio de SVN' => 'http://svn.zeroboard.com', + 'Documento doxygen' => 'http://doc.zeroboard.com', + 'Documentación en PDF' => 'http://doc.zeroboard.com/zeroboard_xe.pdf', + ); + + $lang->zeroboard_xe_usefulness_module = 'Módulos útiles'; + $lang->xe_usefulness_modules = array( + 'dispEditorAdminIndex' => 'Manejo del Editor', + 'dispDocumentAdminList' => 'Manejo de Documentos', + 'dispCommentAdminList' => 'Manejo de Commentarios', + 'dispFileAdminList' => 'Manejo de archivos', + 'dispPollAdminList' => 'Manejo de recomendaciones', + 'dispSpamfilterAdminConfig' => 'Manejo Filtro de Spam', + 'dispCounterAdminIndex' => 'Manejo de contador', + + ); + + $lang->xe_license = 'ZeroBoard XE está bajo la Licencia de GPL'; + $lang->about_shortcut = 'Puede Eliminar los accesos directos de módulos, los cuales fueron registrados en la lista de módulos usados frecuentemente'; +?> diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 2e1724847..ee0baf920 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -92,6 +92,7 @@ unset($document_srl); Context::set('document_srl','',true); } else { + // 브라우저 타이틀 설정 Context::setBrowserTitle($oDocument->getTitleText()); @@ -100,6 +101,12 @@ // 조회수 증가 $oDocument->updateReadedCount(); + + // 목록수를 1개로 수정 (글이 선택되었을 때만) + $this->list_count = 1; + + // 페이지 변수를 제거하여 직접 구하도록 변경 + unset($page); } } @@ -194,7 +201,7 @@ $option->enable_default_component = true; $option->enable_component = true; $option->resizable = true; - $option->height = 600; + $option->height = 400; $editor = $oEditorModel->getEditor($document_srl, $option); Context::set('editor', $editor); diff --git a/modules/blog/conf/info.xml b/modules/blog/conf/info.xml index adf14e3f2..42c61ea61 100644 --- a/modules/blog/conf/info.xml +++ b/modules/blog/conf/info.xml @@ -1,39 +1,40 @@ - - - 블로그 - ブログ - Blog - Blog - 博客 - - 제로 - Zero - zero - zero - zero - - 블로그의 기능을 담당하는 모듈. - 게시판과 비슷하지만 보여지는 view가 다르고 블로그에 적합한 method가 추가되었음. - 레이아웃과 기본 메뉴를 직접 담당 - - - ブログの機能を担当するモジュール - 掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されている。 - レイアウトと基本メニューを直接担当します。 - - - This module contains the blog functions. - It's similar to the bbs module, but it has diffent views and more suitable methods for blog has been included. - This module manages layout and basic menu itself. - - - Es el módulo para funcióne a blog. - Casi mismo del boletín, pero la vista es diferente, y incluye metodo para blog. Maneja directo al diseño y menú principal. - - - 是负责博客功能的模块。 - 虽然类似版面,但其显示模式不同,且还添加了适合博客的method。 - 内置布局和基本的菜单。 - - - + + + 블로그 + ブログ + Blog + Blog + 博客 + + 제로 + Zero + zero + zero + zero + + 블로그의 기능을 담당하는 모듈. + 게시판과 비슷하지만 보여지는 view가 다르고 블로그에 적합한 method가 추가되었음. + 레이아웃과 기본 메뉴를 직접 담당 + + + ブログの機能を担当するモジュール + 掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されている。 + レイアウトと基本メニューを直接担当します。 + + + This module contains the blog functions. + It's similar to the bbs module, but it has diffent views and more suitable methods for blog has been included. + This module manages layout and basic menu itself. + + + Este módulo contiene funciones de blog. + Esto es similar al módulo de tablero, sin embargo la vista que se muestra es diferente e incluye metodos apropiados para blog. + El diseño y el menú básico es manejado por si mismo. + + + 是负责博客功能的模块。 + 虽然类似版面,但其显示模式不同,且还添加了适合博客的method。 + 内置布局和基本的菜单。 + + + diff --git a/modules/blog/lang/en.lang.php b/modules/blog/lang/en.lang.php index bf23e2481..e2772fd1c 100644 --- a/modules/blog/lang/en.lang.php +++ b/modules/blog/lang/en.lang.php @@ -6,9 +6,9 @@ **/ // Words used in button - $lang->cmd_blog_list = 'Blog list'; + $lang->cmd_blog_list = 'Blog List'; $lang->cmd_module_config = 'Common blog setting'; - $lang->cmd_view_info = 'Blog info'; + $lang->cmd_view_info = 'Blog Info'; $lang->cmd_manage_menu = 'Menu management'; $lang->cmd_make_child = 'Add child category'; $lang->cmd_enable_move_category = "Change category position (Drag the top menu after selection)"; diff --git a/modules/blog/lang/es.lang.php b/modules/blog/lang/es.lang.php index 4228c2d8f..c08e8f7a6 100644 --- a/modules/blog/lang/es.lang.php +++ b/modules/blog/lang/es.lang.php @@ -1,33 +1,33 @@ -cmd_blog_list = 'lista de blogs'; - $lang->cmd_module_config = 'configuración común de blogs '; - $lang->cmd_view_info = 'Información de blog'; - $lang->cmd_manage_menu = 'manejar menú'; - $lang->cmd_make_child = 'agregar sub categoria'; - $lang->cmd_enable_move_category = "mover posición de categoria. (arrastrar y soltar la selección)"; - $lang->cmd_remake_cache = 'rehacer caché'; - $lang->cmd_layout_setup = 'configuración del diseño'; - $lang->cmd_layout_edit = 'editar el diseño'; - - // Artículo - $lang->parent_category_name = 'Nombre de la categoria preferencia'; - $lang->category_name = 'Nombre de la categoria'; - $lang->expand = 'Abrir'; - $lang->category_group_srls = 'Limitar grupos'; - $lang->search_result = 'Resulto de la busqueda'; - - // bla bla... - $lang->about_category_name = 'Por favor escribe nombre de la categoria.'; - $lang->about_expand = 'Si seleccióna, sera abierto siempre.'; - $lang->about_category_group_srls = 'Solo muestra categoria a grupo selecciónado. (pero muestra todo en XML)'; - $lang->about_layout_setup = 'Puede modificar directamente los codigo de diseño del blog. Inserta o modifica codigo de widget.'; - $lang->about_blog_category = 'Puede crear las categorias.
A veces no funcióna blog, rehacer caché manualmente puede ser solución.'; - $lang->about_blog = "Es el módulo para crear y manejar blog.\nEl módulo de blog usa la diseña que incluydo en la carátula de blog. Es necesarario decorar su blog manejar las categorias y carátulas.\nSi desea conectar otro boletín en su blog, crea otro menú y connecta en manejar las carátulas."; -?> +cmd_blog_list = 'Lista de blog'; + $lang->cmd_module_config = 'Configuración común de blog '; + $lang->cmd_view_info = 'Información de blog'; + $lang->cmd_manage_menu = 'manejo del menú'; + $lang->cmd_make_child = 'Agregar sub categoría'; + $lang->cmd_enable_move_category = "Cambiar la posición de la categoría. (arrastrar y soltar luego de haber selecionado)"; + $lang->cmd_remake_cache = 'Rehacer archivo caché'; + $lang->cmd_layout_setup = 'Configuración del diseño'; + $lang->cmd_layout_edit = 'Editar el diseño'; + + // Items + $lang->parent_category_name = 'Categoría Parental'; + $lang->category_name = 'Nombre de la categoría'; + $lang->expand = 'Expandir'; + $lang->category_group_srls = 'Limitar el grupo'; + $lang->search_result = 'Resultado de la búsqueda'; + + // bla bla... + $lang->about_category_name = 'Ingresar el nombre de la categoría.'; + $lang->about_expand = 'Si seleccionas esta opción, siempre estará expandido.'; + $lang->about_category_group_srls = 'Solo se verán los grupos seleccionados en la actual categoría. (Abrir manualmente en archivo xml para la exposición)'; + $lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de blog. Insertar o modificar el código de widget.'; + $lang->about_blog_category = 'Puede crear las categorias de blog.
Cuando no funciona la categoría de blog, rehacer el archivo caché manualmente para solucionar.'; + $lang->about_blog = "Este is el módulo de blog para crear y manejar.\nLuego de crear un blog, por favor decora tu blog por categoría y manejo de tema por que este módulo de blog usa el diseño que está incluido en el tema de blog.\nSi desea conectar otros tableros en su blog, usa el menú de módulo para crear un menú y luego conecta con un manejo de tema."; +?> diff --git a/modules/blog/skins/cozy_simple/comment.html b/modules/blog/skins/cozy_simple/comment.html index dad209923..9aaefded9 100644 --- a/modules/blog/skins/cozy_simple/comment.html +++ b/modules/blog/skins/cozy_simple/comment.html @@ -1,4 +1,4 @@ -
+
{@ $idx = 0 } diff --git a/modules/blog/skins/cozy_simple/css/common.css b/modules/blog/skins/cozy_simple/css/common.css index 6da8a6902..368114ed5 100644 --- a/modules/blog/skins/cozy_simple/css/common.css +++ b/modules/blog/skins/cozy_simple/css/common.css @@ -135,6 +135,7 @@ Jeong, Chan Myeong 070601~070630 .blogRead .originalContent { padding:2em 0 2em 0;} .blogRead .titleAndCategory { float:left;} .blogRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;} +.blogRead .titleAndCategory h4 a { color:#333333; } .blogRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;} .blogRead .titleAndCategory .category { font-size:.9em; color:#999999; white-space:nowrap;} @@ -189,17 +190,17 @@ Jeong, Chan Myeong 070601~070630 .blogRead .replyAndTrackback a#toggleReply { background:url(../images/common/buttonToggleReply.gif) no-repeat right top;} .blogRead .replyAndTrackback a#toggleTrackback { background:url(../images/common/buttonToggleReply.gif) no-repeat right -13px;} -.blogRead #reply, -.blogRead #trackback { color:#666666; border-left:1px solid #EAEAEA; border-right:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; padding-top:1em;} -.blogRead #reply { } -.blogRead #trackback { display:none;} +.blogRead .reply, +.blogRead .trackback { color:#666666; border-left:1px solid #EAEAEA; border-right:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; padding-top:1em;} +.blogRead .reply { } +.blogRead .trackback { display:none;} .blogRead .topBorder { border-top:1px solid #EAEAEA; } -.blogRead #reply .contentBox, -.blogRead #trackback .contentBox { line-height:1.25em; color:#676767; clear:both; padding:1em; overflow:hidden;} -.blogRead #reply .top_border, -.blogRead #trackback .top_border { border-top:1px dashed #d8d8d8; } +.blogRead .reply .contentBox, +.blogRead .trackback .contentBox { line-height:1.25em; color:#676767; clear:both; padding:1em; overflow:hidden;} +.blogRead .reply .top_border, +.blogRead .trackback .top_border { border-top:1px dashed #d8d8d8; } .blogRead .contentBox .content { width:100%; overflow:hidden; clear:both; margin-bottom:1em; } .blogRead .contentBox .author { float:left; overflow:hidden; color:#3173a3;} diff --git a/modules/blog/skins/cozy_simple/js/blog.js b/modules/blog/skins/cozy_simple/js/blog.js index 9e448a914..1573f5106 100644 --- a/modules/blog/skins/cozy_simple/js/blog.js +++ b/modules/blog/skins/cozy_simple/js/blog.js @@ -105,16 +105,16 @@ function doChangeCategory(sel_obj, url) { } // Editor Reply And Trackback Toggle -function toggleReply() { - xGetElementById('reply').style.display = 'block'; - xGetElementById('trackback').style.display = 'none'; - xGetElementById('toggleReply').parentNode.className = 'selected'; - xGetElementById('toggleTrackback').parentNode.className = ''; +function toggleReply(id) { + xGetElementById('reply_'+id).style.display = 'block'; + xGetElementById('trackback_'+id).style.display = 'none'; + xGetElementById('toggleReply_'+id).parentNode.className = 'selected'; + xGetElementById('toggleTrackback_'+id).parentNode.className = ''; } -function toggleTrackback() { - xGetElementById('reply').style.display = 'none'; - xGetElementById('trackback').style.display = 'block'; - xGetElementById('toggleReply').parentNode.className = ''; - xGetElementById('toggleTrackback').parentNode.className = 'selected'; +function toggleTrackback(id) { + xGetElementById('reply_'+id).style.display = 'none'; + xGetElementById('trackback_'+id).style.display = 'block'; + xGetElementById('toggleReply_'+id).parentNode.className = ''; + xGetElementById('toggleTrackback_'+id).parentNode.className = 'selected'; } diff --git a/modules/blog/skins/cozy_simple/trackback.html b/modules/blog/skins/cozy_simple/trackback.html index 041158cc0..120a954fd 100644 --- a/modules/blog/skins/cozy_simple/trackback.html +++ b/modules/blog/skins/cozy_simple/trackback.html @@ -1,6 +1,6 @@ -
+
{@ $idx = 0 } diff --git a/modules/blog/skins/cozy_simple/view_document.html b/modules/blog/skins/cozy_simple/view_document.html index fa29547e9..82d0e537a 100644 --- a/modules/blog/skins/cozy_simple/view_document.html +++ b/modules/blog/skins/cozy_simple/view_document.html @@ -1,17 +1,11 @@ - -
- - -
-
-

{$oDocument->getTitleText()}

+

{$oDocument->getTitleText()}

|{$category_list[$oDocument->get('category_srl')]->title}
@@ -96,11 +90,11 @@
diff --git a/modules/blog/skins/xe_blog/css/common.css b/modules/blog/skins/xe_blog/css/common.css index bfdd3eb3c..4d3cab4e1 100644 --- a/modules/blog/skins/xe_blog/css/common.css +++ b/modules/blog/skins/xe_blog/css/common.css @@ -140,6 +140,7 @@ Jeong, Chan Myeong 070601~070630 .blogRead .titleAndCategory { float:left;} .blogRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;} +.blogRead .titleAndCategory h4 a { color:#000000; } .blogRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;} .blogRead .titleAndCategory .cotegory { font-size:.9em; color:#999999; white-space:nowrap;} diff --git a/modules/blog/skins/xe_blog/js/blog_tree_menu.js b/modules/blog/skins/xe_blog/js/blog_tree_menu.js index 167ba1734..e2abc7ec4 100644 --- a/modules/blog/skins/xe_blog/js/blog_tree_menu.js +++ b/modules/blog/skins/xe_blog/js/blog_tree_menu.js @@ -35,7 +35,7 @@ function blogLoadTreeMenu(xml_url, title, index_url) { if(typeof(zone)=="undefined") return; // 제목이 없으면 제목을 category로 지정 - if(typeof(title)=="undefined" || !title) title = "category"; + if(typeof(title)=="undefined" || !title) title = "Category"; // index url이 없으면 현재 # 으로 대체 if(!index_url) index_url= "#"; diff --git a/modules/blog/skins/xe_blog/view_document.html b/modules/blog/skins/xe_blog/view_document.html index 63fc1e317..559032510 100644 --- a/modules/blog/skins/xe_blog/view_document.html +++ b/modules/blog/skins/xe_blog/view_document.html @@ -3,7 +3,7 @@
-

{$oDocument->getTitleText()}

+

{$oDocument->getTitleText()}

|{$category_list[$oDocument->get('category_srl')]->title} diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 00708e3d0..c4d6f6503 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -177,7 +177,7 @@ $option->enable_default_component = true; $option->enable_component = true; $option->resizable = true; - $option->height = 600; + $option->height = 400; $editor = $oEditorModel->getEditor($document_srl, $option); Context::set('editor', $editor); @@ -279,7 +279,7 @@ Context::set('comment', $comment); // 댓글 에디터 세팅 - $this->setCommentEditor($comment_srl, 400); + $this->setCommentEditor($comment_srl, 300); $this->setTemplateFile('comment_form'); } diff --git a/modules/board/conf/info.xml b/modules/board/conf/info.xml index 6ca214823..25e09f44f 100644 --- a/modules/board/conf/info.xml +++ b/modules/board/conf/info.xml @@ -1,20 +1,20 @@ - - - 게시판 - 版面 - Board - Boletín - 掲示板 - - 제로 - zero - zero - zero - Zero - 게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다. - 给用户提供相应版面功能,将包含版面的生成/添加及版面管理等管理员功能。 - Module of the board''s function. Also includes administrator functions such as creating/managing boards. - Es el módulo para funciónar a boletín. Incluye funciónes de administración como crear/ agregar o manejar boletín. - 掲示板の機能を担うモジュールです。掲示板の生成・追加・管理などの管理者機能も含まれています。 - - + + + 게시판 + 版面 + Board + Tablero + 掲示板 + + 제로 + zero + zero + zero + Zero + 게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다. + 给用户提供相应版面功能,将包含版面的生成/添加及版面管理等管理员功能。 + Module of the board''s function. Also includes administrator functions such as creating/managing boards. + Módulo para el funcionamiento del tablero. Incluye funciones de administración como crear/ agregar o manejar los tableros. + 掲示板の機能を担うモジュールです。掲示板の生成・追加・管理などの管理者機能も含まれています。 + + diff --git a/modules/board/lang/es.lang.php b/modules/board/lang/es.lang.php index 2b14c4def..7ffe1e6b7 100644 --- a/modules/board/lang/es.lang.php +++ b/modules/board/lang/es.lang.php @@ -1,17 +1,18 @@ -board = "Boletín"; - - // Palabras utiliza en botónes - $lang->cmd_board_list = 'Lista de boletín'; - $lang->cmd_module_config = 'configuración comun de boletínes'; - $lang->cmd_view_info = 'ver información de boletín'; - $lang->move_target_module = "Módulo para mover"; - - $lang->about_board = "Es el módulo para crear y manejar boletínes.\nDespues de crear un boletín, haga clic en nombre de módulos para configuración mas detallado.\nEl nombre de módulo es nombre de URL, sea cuidoso deseando el nombre. (ej : http://dominio/zb/?mid=nombre de módulo)"; -?> +board = "Tablero"; + + // Palabras utilizadas en los botones + $lang->cmd_board_list = 'Lista del Tablero'; + $lang->cmd_module_config = 'Configuración común del Tablero'; + $lang->cmd_view_info = 'Información del Tablero'; + $lang->move_target_module = "Módulo para cambiar de posición"; + + $lang->about_board = "Este módulo es para crear y manejar los tableros.\nLuego de crear un Tablero, seleciona el nombre del módulo para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)"; +?> + diff --git a/modules/board/skins/cozy_simple_gallery/js/board.js b/modules/board/skins/cozy_simple_gallery/js/board.js index f40a0b9c0..304ff69d7 100644 --- a/modules/board/skins/cozy_simple_gallery/js/board.js +++ b/modules/board/skins/cozy_simple_gallery/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); @@ -135,18 +135,3 @@ function doScrap(document_srl) { params["document_srl"] = document_srl; exec_xml("member","procMemberScrapDocument", params, null); } - -// Editor Reply And Trackback Toggle -function toggleReply() { - xGetElementById('reply').style.display = 'block'; - xGetElementById('trackback').style.display = 'none'; - xGetElementById('toggleReply').parentNode.className = 'selected'; - xGetElementById('toggleTrackback').parentNode.className = ''; -} - -function toggleTrackback() { - xGetElementById('reply').style.display = 'none'; - xGetElementById('trackback').style.display = 'block'; - xGetElementById('toggleReply').parentNode.className = ''; - xGetElementById('toggleTrackback').parentNode.className = 'selected'; -} diff --git a/modules/board/skins/cozy_simple_list/js/board.js b/modules/board/skins/cozy_simple_list/js/board.js index f40a0b9c0..304ff69d7 100644 --- a/modules/board/skins/cozy_simple_list/js/board.js +++ b/modules/board/skins/cozy_simple_list/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); @@ -135,18 +135,3 @@ function doScrap(document_srl) { params["document_srl"] = document_srl; exec_xml("member","procMemberScrapDocument", params, null); } - -// Editor Reply And Trackback Toggle -function toggleReply() { - xGetElementById('reply').style.display = 'block'; - xGetElementById('trackback').style.display = 'none'; - xGetElementById('toggleReply').parentNode.className = 'selected'; - xGetElementById('toggleTrackback').parentNode.className = ''; -} - -function toggleTrackback() { - xGetElementById('reply').style.display = 'none'; - xGetElementById('trackback').style.display = 'block'; - xGetElementById('toggleReply').parentNode.className = ''; - xGetElementById('toggleTrackback').parentNode.className = 'selected'; -} diff --git a/modules/board/skins/cozy_simple_webzine/js/board.js b/modules/board/skins/cozy_simple_webzine/js/board.js index f40a0b9c0..304ff69d7 100644 --- a/modules/board/skins/cozy_simple_webzine/js/board.js +++ b/modules/board/skins/cozy_simple_webzine/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); @@ -135,18 +135,3 @@ function doScrap(document_srl) { params["document_srl"] = document_srl; exec_xml("member","procMemberScrapDocument", params, null); } - -// Editor Reply And Trackback Toggle -function toggleReply() { - xGetElementById('reply').style.display = 'block'; - xGetElementById('trackback').style.display = 'none'; - xGetElementById('toggleReply').parentNode.className = 'selected'; - xGetElementById('toggleTrackback').parentNode.className = ''; -} - -function toggleTrackback() { - xGetElementById('reply').style.display = 'none'; - xGetElementById('trackback').style.display = 'block'; - xGetElementById('toggleReply').parentNode.className = ''; - xGetElementById('toggleTrackback').parentNode.className = 'selected'; -} diff --git a/modules/board/skins/xe_gallery/js/board.js b/modules/board/skins/xe_gallery/js/board.js index 7611a063d..304ff69d7 100644 --- a/modules/board/skins/xe_gallery/js/board.js +++ b/modules/board/skins/xe_gallery/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); diff --git a/modules/board/skins/xe_list/js/board.js b/modules/board/skins/xe_list/js/board.js index 7611a063d..304ff69d7 100644 --- a/modules/board/skins/xe_list/js/board.js +++ b/modules/board/skins/xe_list/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); diff --git a/modules/board/skins/xe_webzine/js/board.js b/modules/board/skins/xe_webzine/js/board.js index 7611a063d..304ff69d7 100644 --- a/modules/board/skins/xe_webzine/js/board.js +++ b/modules/board/skins/xe_webzine/js/board.js @@ -39,8 +39,8 @@ function completeDeleteDocument(ret_obj) { var mid = ret_obj['mid']; var page = ret_obj['page']; - var url = "./?mid="+mid; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -81,7 +81,7 @@ function completeInsertComment(ret_obj) { var document_srl = ret_obj['document_srl']; var comment_srl = ret_obj['comment_srl']; - var url = "./?mid="+mid+"&document_srl="+document_srl; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if(comment_srl) url += "#comment_"+comment_srl; alert(message); @@ -97,8 +97,8 @@ function completeDeleteComment(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url += url.setQuery('page',page); alert(message); @@ -113,8 +113,8 @@ function completeDeleteTrackback(ret_obj) { var document_srl = ret_obj['document_srl']; var page = ret_obj['page']; - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; + var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); + if(page) url = url.setQuery('page',page); alert(message); diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 6f6133358..42c723826 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -281,7 +281,7 @@ // 썸네일이 있더라도 글의 수정시간과 비교해서 다르면 다시 생성함 if(file_exists($thumbnail_file)) { - $file_created_time = date("YmdHis",filectime($thumbnail_file)); + $file_created_time = date("YmdHis",filemtime($thumbnail_file)); $modified_time = $this->get('last_update'); if($modified_time > $file_created_time) @unlink($thumbnail_file); } diff --git a/modules/editor/components/emoticon/tpl/popup.js b/modules/editor/components/emoticon/tpl/popup.js index e3a1598c3..8a99f6f25 100644 --- a/modules/editor/components/emoticon/tpl/popup.js +++ b/modules/editor/components/emoticon/tpl/popup.js @@ -1,7 +1,7 @@ function insertEmoticon(obj) { if(typeof(opener)=='undefined') return; - var url = obj.src.replace(request_uri,''); + var url = obj.src.replace(request_uri,'/'); var text = "\"emoticon\""; opener.editorFocus(opener.editorPrevSrl); diff --git a/modules/editor/components/image_link/tpl/popup.js b/modules/editor/components/image_link/tpl/popup.js index 2e815a32b..2176f8505 100644 --- a/modules/editor/components/image_link/tpl/popup.js +++ b/modules/editor/components/image_link/tpl/popup.js @@ -24,8 +24,8 @@ function getImage() { var border = node.getAttribute("border"); var align = node.getAttribute("align"); var alt = node.getAttribute("alt"); - var width = node.getAttribute("width"); - var height = node.getAttribute("height"); + var width = xWidth(node); + var height = xHeight(node); orig_width = width; orig_height = height; var link_url = node.getAttribute("link_url"); diff --git a/modules/editor/components/multimedia_link/tpl/popup.js b/modules/editor/components/multimedia_link/tpl/popup.js index 0d0c74900..0215427af 100644 --- a/modules/editor/components/multimedia_link/tpl/popup.js +++ b/modules/editor/components/multimedia_link/tpl/popup.js @@ -45,7 +45,7 @@ function insertMultimedia(obj) { return; } - var text = "\""+caption+"\""; + var text = "\""+caption+"\""; opener.editorFocus(opener.editorPrevSrl); diff --git a/modules/editor/components/url_link/tpl/popup.js b/modules/editor/components/url_link/tpl/popup.js index cd9e62c9c..316560528 100644 --- a/modules/editor/components/url_link/tpl/popup.js +++ b/modules/editor/components/url_link/tpl/popup.js @@ -44,9 +44,9 @@ function getText() { return; } else if(node.nodeName == "IMG") { - alert(1); } else { var fo_obj = xGetElementById("fo_component"); + var text = opener.editorGetSelectedHtml(opener.editorPrevSrl); fo_obj.text.value = text.replace(/<([^>]*)>/ig,'').replace(/</ig,'<').replace(/>/ig,'>').replace(/&/ig,'&'); } } diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index 429b9219a..6b24ad93e 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -13,25 +13,34 @@ * @brief 에디터를 return **/ function getEditor($upload_target_srl, $option = null) { - // 옵션 설정 + // 파일 업로드 유무 옵션 설정 if(!$option->allow_fileupload) $allow_fileupload = false; else $allow_fileupload = true; + // 자동 저장 유무 옵션 설정 if(!$option->enable_autosave) $enable_autosave = false; else $enable_autosave = true; + // 기본 에디터 컴포넌트 사용 설정 if(!$option->enable_default_component) $enable_default_component = false; else $enable_default_component = true; + // 확장 컴포넌트 사용 설정 if(!$option->enable_component) $enable_component = false; else $enable_component = true; + // 크기 조절 옵션 설정 if(!$option->resizable) $resizable = 'false'; else $resizable = 'true'; + // 높이 설정 if(!$option->height) $editor_height = 400; else $editor_height = $option->height; + // 스킨 설정 + if(!$option->skin) $skin = 'default'; + else $skin = $option->skin; + // 대상 문서 번호 설정 Context::set('upload_target_srl', $upload_target_srl); @@ -77,7 +86,7 @@ Context::set('editor_height', $editor_height); // 템플릿을 미리 컴파일해서 컴파일된 소스를 return - $tpl_path = $this->module_path.'tpl'; + $tpl_path = sprintf('%sskins/%s/', $this->module_path, $skin); $tpl_file = 'editor.html'; // editor_path를 지정 @@ -242,7 +251,7 @@ $cache_file = sprintf('./files/cache/editor/%s.%s.php', $component, $lang_type); // 캐시된 xml파일이 있으면 include 후 정보 return - if(file_exists($cache_file) && file_exists($xml_file) && filectime($cache_file) > filectime($xml_file)) { + if(file_exists($cache_file) && file_exists($xml_file) && filemtime($cache_file) > filemtime($xml_file)) { include($cache_file); return $xml_info; } diff --git a/modules/editor/lang/en.lang.php b/modules/editor/lang/en.lang.php index 4535798d4..c7e43f544 100644 --- a/modules/editor/lang/en.lang.php +++ b/modules/editor/lang/en.lang.php @@ -27,4 +27,59 @@ $lang->cmd_disable = "Inactive"; $lang->cmd_enable = "Active"; + + $lang->edit->fontname = 'Font'; + $lang->edit->fontsize = 'Size'; + $lang->edit->use_paragraph = 'Paragraph Function'; + $lang->edit->fontlist = array( + "Gulim", + "Dodum", + "Batang", + "Goongseo", + "times", + "Courier", + "Tahoma", + "Arial", + ); + + $lang->edit->header = "Style"; + $lang->edit->header_list = array( + "h1" => "Subject 1", + "h2" => "Subject 2", + "h3" => "Subject 3", + "h4" => "Subject 4", + "h5" => "Subject 5", + "h6" => "Subject 6", + ); + + $lang->edit->submit = 'Submit'; + + $lang->edit->help_fontcolor = "Select font color"; + $lang->edit->help_fontbgcolor = "Select background color of font"; + $lang->edit->help_bold = "Make font bold"; + $lang->edit->help_italic = "Make italic font"; + $lang->edit->help_underline = "Underline font"; + $lang->edit->help_strike = "Strike font"; + $lang->edit->help_redo = "Redo"; + $lang->edit->help_undo = "Undo"; + $lang->edit->help_align_left = "Align left"; + $lang->edit->help_align_center = "Align center"; + $lang->edit->help_align_right = "Align right"; + $lang->edit->help_add_indent = "Add indent"; + $lang->edit->help_remove_indent = "Remove indent"; + $lang->edit->help_list_number = "Apply number list"; + $lang->edit->help_list_bullet = "Apply bullet list"; + $lang->edit->help_use_paragrapth = "Press Ctrl+Enter to use paragraph. (Press Alt+S to save)"; + + $lang->edit->upload = 'Attachment'; + $lang->edit->upload_file = 'Attach'; + $lang->edit->link_file = 'Insert to Content'; + $lang->edit->delete_selected = 'Delete Selected'; + + $lang->edit->icon_align_article = 'Occupy a paragraph'; + $lang->edit->icon_align_left = 'Align Left'; + $lang->edit->icon_align_middle = 'Align Center'; + $lang->edit->icon_align_right = 'Align Right'; + + $lang->about_dblclick_in_editor = 'You are able to set detail component configure by double-clicking on background, text, images, or quotations'; ?> diff --git a/modules/editor/lang/es.lang.php b/modules/editor/lang/es.lang.php index 06db5344d..df071d902 100644 --- a/modules/editor/lang/es.lang.php +++ b/modules/editor/lang/es.lang.php @@ -27,4 +27,59 @@ $lang->cmd_disable = "Activado"; $lang->cmd_enable = "Desactivado"; + + $lang->edit->fontname = 'Font'; + $lang->edit->fontsize = 'Size'; + $lang->edit->use_paragraph = 'Paragraph Function'; + $lang->edit->fontlist = array( + "Gulim", + "Dodum", + "Batang", + "Goongseo", + "times", + "Courier", + "Tahoma", + "Arial", + ); + + $lang->edit->header = "Style"; + $lang->edit->header_list = array( + "h1" => "Subject 1", + "h2" => "Subject 2", + "h3" => "Subject 3", + "h4" => "Subject 4", + "h5" => "Subject 5", + "h6" => "Subject 6", + ); + + $lang->edit->submit = 'Submit'; + + $lang->edit->help_fontcolor = "Select font color"; + $lang->edit->help_fontbgcolor = "Select background color of font"; + $lang->edit->help_bold = "Make font bold"; + $lang->edit->help_italic = "Make italic font"; + $lang->edit->help_underline = "Underline font"; + $lang->edit->help_strike = "Strike font"; + $lang->edit->help_redo = "Redo"; + $lang->edit->help_undo = "Undo"; + $lang->edit->help_align_left = "Align left"; + $lang->edit->help_align_center = "Align center"; + $lang->edit->help_align_right = "Align right"; + $lang->edit->help_add_indent = "Add indent"; + $lang->edit->help_remove_indent = "Remove indent"; + $lang->edit->help_list_number = "Apply number list"; + $lang->edit->help_list_bullet = "Apply bullet list"; + $lang->edit->help_use_paragrapth = "Press Ctrl+Enter to use paragraph. (Press Alt+S to save)"; + + $lang->edit->upload = 'Attachment'; + $lang->edit->upload_file = 'Attach'; + $lang->edit->link_file = 'Insert to Content'; + $lang->edit->delete_selected = 'Delete Selected'; + + $lang->edit->icon_align_article = 'Occupy a paragraph'; + $lang->edit->icon_align_left = 'Align Left'; + $lang->edit->icon_align_middle = 'Align Center'; + $lang->edit->icon_align_right = 'Align Right'; + + $lang->about_dblclick_in_editor = 'You are able to set detail component configure by double-clicking on background, text, images, or quotations'; ?> diff --git a/modules/editor/lang/jp.lang.php b/modules/editor/lang/jp.lang.php index 76c2f7b29..f0a27f189 100644 --- a/modules/editor/lang/jp.lang.php +++ b/modules/editor/lang/jp.lang.php @@ -27,4 +27,59 @@ $lang->cmd_disable = "未使用"; $lang->cmd_enable = "使用"; + + $lang->edit->fontname = 'フォント'; + $lang->edit->fontsize = 'サイズ'; + $lang->edit->use_paragraph = '段落機能'; + $lang->edit->fontlist = array( + "MS Pゴシック", + "MS P明朝", + "Osaka-等幅", + "ヒラギノ角ゴ Pro W3", + "times", + "Courier", + "Tahoma", + "Arial", + ); + + $lang->edit->header = "見出し"; + $lang->edit->header_list = array( + "h1" => "見出し1", + "h2" => "見出し2", + "h3" => "見出し3", + "h4" => "見出し4", + "h5" => "見出し5", + "h6" => "見出し6", + ); + + $lang->edit->submit = '送信'; + + $lang->edit->help_fontcolor = "テキストの色を指定します。"; + $lang->edit->help_fontbgcolor = "テキストの背景色を指定します。"; + $lang->edit->help_bold = "テキストを太字に指定します。"; + $lang->edit->help_italic = "テキストを斜体にします。"; + $lang->edit->help_underline = "テキストに下線(アンダーライン)を引きます。"; + $lang->edit->help_strike = "打ち消し線を引きます。"; + $lang->edit->help_redo = "直前に取り消した処理をもう一度繰り返して実行します。"; + $lang->edit->help_undo = "直前に行った操作や処理を取り消し元に戻します。"; + $lang->edit->help_align_left = "テキストを左揃えで表示します。"; + $lang->edit->help_align_center = "テキストを中央揃えで表示します。"; + $lang->edit->help_align_right = "テキストを右揃えで表示します。"; + $lang->edit->help_add_indent = "テキストの行頭の位置を右に寄せます。"; + $lang->edit->help_remove_indent = "インデント(字下げ)を除去します。"; + $lang->edit->help_list_number = "リスト項目に数字で順序を付けます。"; + $lang->edit->help_list_bullet = "記号でリスト項目を記述します。"; + $lang->edit->help_use_paragrapth = "段落機能を使用する場合は、「Ctrl+Enter」を押します(書き終わった後、「Alt+S」を押すと保存されます)。"; + + $lang->edit->upload = '添付'; + $lang->edit->upload_file = 'ファイル添付'; + $lang->edit->link_file = 'テキスト挿入'; + $lang->edit->delete_selected = '選択リスト削除'; + + $lang->edit->icon_align_article = '一段落'; + $lang->edit->icon_align_left = '左揃え'; + $lang->edit->icon_align_middle = '中央揃え'; + $lang->edit->icon_align_right = '右揃え'; + + $lang->about_dblclick_in_editor = '背景、文字、イメージ、引用文の上にカーソルを合わせ,ダブルクリックすると詳細設定できるコンポーネントを表示します。'; ?> diff --git a/modules/editor/lang/ko.lang.php b/modules/editor/lang/ko.lang.php index d8dc7bf10..4d0519454 100644 --- a/modules/editor/lang/ko.lang.php +++ b/modules/editor/lang/ko.lang.php @@ -27,4 +27,59 @@ $lang->cmd_disable = "비활성"; $lang->cmd_enable = "활성"; + + $lang->edit->fontname = '글꼴'; + $lang->edit->fontsize = '크기'; + $lang->edit->use_paragraph = '문단기능'; + $lang->edit->fontlist = array( + "굴림", + "돋움", + "바탕", + "궁서", + "times", + "Courier", + "Tahoma", + "Arial", + ); + + $lang->edit->header = "형식"; + $lang->edit->header_list = array( + "h1" => "제목 1", + "h2" => "제목 2", + "h3" => "제목 3", + "h4" => "제목 4", + "h5" => "제목 5", + "h6" => "제목 6", + ); + + $lang->edit->submit = '확인'; + + $lang->edit->help_fontcolor = "글자의 색상을 지정합니다"; + $lang->edit->help_fontbgcolor = "글자의 배경색상을 지정합니다"; + $lang->edit->help_bold = "글자를 진하게 합니다"; + $lang->edit->help_italic = "글자를 기울이게 합니다"; + $lang->edit->help_underline = "밑줄을 긋습니다"; + $lang->edit->help_strike = "취소선을 긋습니다"; + $lang->edit->help_redo = "다음 동작으로 돌아갑니다"; + $lang->edit->help_undo = "이전 동작으로 돌아갑니다"; + $lang->edit->help_align_left = "왼쪽 정렬을 합니다"; + $lang->edit->help_align_center = "가운데 정렬을 합니다"; + $lang->edit->help_align_right = "오른쪽 정렬을 합니다"; + $lang->edit->help_add_indent = "들여쓰기를 합니다"; + $lang->edit->help_remove_indent = "들여쓰기를 제거합니다"; + $lang->edit->help_list_number = "숫자로된 목록을 적용합니다"; + $lang->edit->help_list_bullet = "기호로된 목록을 적용합니다"; + $lang->edit->help_use_paragrapth = "문단 나누기를 하시려면 ctrl-엔터를 누르시면 됩니다. (글 작성완료후 alt-S를 누르면 저장이 됩니다)"; + + $lang->edit->upload = '첨부'; + $lang->edit->upload_file = '파일 첨부'; + $lang->edit->link_file = '본문 삽입'; + $lang->edit->delete_selected = '선택 삭제'; + + $lang->edit->icon_align_article = '한 문단을 차지'; + $lang->edit->icon_align_left = '글의 왼쪽으로'; + $lang->edit->icon_align_middle = '가운데 정렬'; + $lang->edit->icon_align_right = '글의 우측으로'; + + $lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다'; ?> diff --git a/modules/editor/lang/zh-CN.lang.php b/modules/editor/lang/zh-CN.lang.php index adf188945..42fd27473 100644 --- a/modules/editor/lang/zh-CN.lang.php +++ b/modules/editor/lang/zh-CN.lang.php @@ -27,4 +27,59 @@ $lang->cmd_disable = "非激活"; $lang->cmd_enable = "激活"; + + $lang->edit->fontname = '字体'; + $lang->edit->fontsize = '大小'; + $lang->edit->use_paragraph = '段落功能'; + $lang->edit->fontlist = array( + "仿宋_GB2312", + "黑体", + "楷体_GB2312", + "宋体", + "times", + "Courier", + "Tahoma", + "Arial", + ); + + $lang->edit->header = "样式"; + $lang->edit->header_list = array( + "h1" => "标题 1", + "h2" => "标题 2", + "h3" => "标题 3", + "h4" => "标题 4", + "h5" => "标题 5", + "h6" => "标题 6", + ); + + $lang->edit->submit = '确认'; + + $lang->edit->help_fontcolor = "文本颜色"; + $lang->edit->help_fontbgcolor = "背景颜色"; + $lang->edit->help_bold = "粗体"; + $lang->edit->help_italic = "斜体"; + $lang->edit->help_underline = "下划线"; + $lang->edit->help_strike = "取消线"; + $lang->edit->help_redo = "重新操作"; + $lang->edit->help_undo = "返回操作"; + $lang->edit->help_align_left = "左对齐"; + $lang->edit->help_align_center = "居中对齐"; + $lang->edit->help_align_right = "右对齐"; + $lang->edit->help_add_indent = "缩进"; + $lang->edit->help_remove_indent = "清除缩进"; + $lang->edit->help_list_number = "有序列表"; + $lang->edit->help_list_bullet = "无序列表"; + $lang->edit->help_use_paragrapth = "分段请按 ctrl+回车. (发表主题快捷键:alt+S)"; + + $lang->edit->upload = '上传'; + $lang->edit->upload_file = '上传附件'; + $lang->edit->link_file = '插入内容'; + $lang->edit->delete_selected = '删除所选'; + + $lang->edit->icon_align_article = '占一个段落'; + $lang->edit->icon_align_left = '文本左侧'; + $lang->edit->icon_align_middle = '居中对齐'; + $lang->edit->icon_align_right = '文本右侧'; + + $lang->about_dblclick_in_editor = '双击背景, 文本, 图片, 引用即可对其相关组件进行详细设置。'; ?> diff --git a/modules/editor/skins/default/css/editor.css b/modules/editor/skins/default/css/editor.css new file mode 100644 index 000000000..f25c0d957 --- /dev/null +++ b/modules/editor/skins/default/css/editor.css @@ -0,0 +1,50 @@ +@charset "utf-8"; + +.xeEditor { } +.xeEditor .optionABC { clear:both; width:100%; border-bottom:1px solid #c2c2c2; overflow:hidden; background:#ffffff url(../images/bgBoardEditorOption.gif) no-repeat -3px bottom;} +.xeEditor .optionABC .selectGroup { white-space:nowrap; display:block; height:21px; margin:0 .5em 0 0; padding-left:1em; float:left;} +.xeEditor .optionABC .buttonGroup { white-space:nowrap; position:relative; display:block; margin:0 .5em 0 0; float:left; height:21px; overflow:hidden; padding-left:2px;} +.xeEditor .optionABC .buttonGroup img { float:left; display:block; margin-left:-1px; cursor:pointer;} +.xeEditor .optionA, +.xeEditor .optionB, +.xeEditor .optionC { float:left; background:#ffffff url(../images/bgBoardEditorOption.gif) no-repeat left bottom; padding:.5em 0 .5em .7em; overflow:hidden;} +.xeEditor .optionA *, +.xeEditor .optionB *, +.xeEditor .optionC * { vertical-align:middle;} +.xeEditor .optionA { background-position:-3px bottom; padding-left:0;} +.xeEditor .optionA select option { font-size:.9em; } +.xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:#f8f8f8; border-bottom:1px solid #e1e1e1; height:29px;} +.xeEditor .optionDE .buttonGroup { white-space:nowrap; position:relative; display:block; float:left; height:21px; overflow:hidden; padding-left:2px;} +.xeEditor .optionDE img { float:left; display:block; margin-right:.5em; cursor:pointer;} +.xeEditor .optionD { padding:.5em 0 .5em .8em; overflow:hidden; float:left; border-right:1px solid #e0e0e0;} +.xeEditor .optionE { padding:4px 0 0 8px; overflow:hidden; border-left:1px solid #ffffff; float:left;} + +.xeEditor .editorInfo { background:#fbfbfb; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 20px 0 20px;} +.xeEditor .close { cursor:pointer; position:absolute; top:3px; right:3px; _top:3px; _right:25px;} +.xeEditor .editor_iframe_box { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:.5em; margin:0 20px 0 20px; } + +.xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; } +.xeEditor .textAreaDragIndicatorBar { background:url(../images/buttonTextAreaDrag.gif) no-repeat center; cursor:move;height:14px;} + +.xeEditor .editor_info { clear:both; padding:5px 20px 5px 20px; overflow:hidden;} +.xeEditor .editor_info .editor_option { float:left; color:#888888; } +.xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; } + +.xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;} +.xeEditor #textAreaDrag {} +.xeEditor .fileAttach { padding:0 1em .5em 1em;} +.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:#fbfbfb; float:left; margin-right:.5em;} +.xeEditor .fileAttach .preview img { width:110px; height:110px; float:left; display:block;} +.xeEditor .fileAttach .fileListArea { float:left; width:50%; margin-right:.7em; padding-bottom:.5em; margin-bottom:1em} +.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:.3em; font-size:11px;} +.xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} +.xeEditor .fileAttach .fileListArea span.file_attach_info { color:#3f4040; font-size:11px; text-align:left;} +.xeEditor .fileAttach .fileListArea span.file_attach_info strong { color:#ff6600; font-size:11px; font-weight:bold; } +.xeEditor .fileAttach .fileUploadControl { margin-bottom:5px; } + +.xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton img { vertical-align:middle;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .leftCap { width:2px; height:21px; background:url(../images/buttonTypeBLeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .rightCap { width:2px; height:21px; background:url(../images/buttonTypeBRight.gif) no-repeat; margin:0 -1px 0 .4em;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .icon { margin:0 .2em;} diff --git a/modules/editor/skins/default/editor.html b/modules/editor/skins/default/editor.html new file mode 100644 index 000000000..c5bdae6d6 --- /dev/null +++ b/modules/editor/skins/default/editor.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+
+ + + + + +
+ +
+ {$lang->edit->help_bold} + {$lang->edit->help_italic} + {$lang->edit->help_underline} + {$lang->edit->help_fontcolor} + {$lang->edit->help_fontbgcolor} +
+
+ +
+
+ {$lang->edit->help_align_left} + {$lang->edit->help_align_center} + {$lang->edit->help_align_right} + +
+ + +
+ + +
+ + + + +
+
+
+ + + {$component->title} + + +
+
+
+ +
+ + +
+ {$lang->about_dblclick_in_editor} + + close +
+ + +
+
+ +
+
 
+
+ +
+ +
+ + + + + + + + +
+ + diff --git a/modules/editor/tpl/images/bgBoardEditorOption.gif b/modules/editor/skins/default/images/bgBoardEditorOption.gif similarity index 100% rename from modules/editor/tpl/images/bgBoardEditorOption.gif rename to modules/editor/skins/default/images/bgBoardEditorOption.gif diff --git a/modules/editor/tpl/images/blank.gif b/modules/editor/skins/default/images/blank.gif similarity index 100% rename from modules/editor/tpl/images/blank.gif rename to modules/editor/skins/default/images/blank.gif diff --git a/modules/editor/tpl/images/buttonClose.gif b/modules/editor/skins/default/images/buttonClose.gif similarity index 100% rename from modules/editor/tpl/images/buttonClose.gif rename to modules/editor/skins/default/images/buttonClose.gif diff --git a/modules/editor/tpl/images/buttonTextAreaDrag.gif b/modules/editor/skins/default/images/buttonTextAreaDrag.gif similarity index 100% rename from modules/editor/tpl/images/buttonTextAreaDrag.gif rename to modules/editor/skins/default/images/buttonTextAreaDrag.gif diff --git a/modules/editor/tpl/images/buttonTypeBCenter.gif b/modules/editor/skins/default/images/buttonTypeBCenter.gif similarity index 100% rename from modules/editor/tpl/images/buttonTypeBCenter.gif rename to modules/editor/skins/default/images/buttonTypeBCenter.gif diff --git a/modules/editor/tpl/images/buttonTypeBLeft.gif b/modules/editor/skins/default/images/buttonTypeBLeft.gif similarity index 100% rename from modules/editor/tpl/images/buttonTypeBLeft.gif rename to modules/editor/skins/default/images/buttonTypeBLeft.gif diff --git a/modules/editor/tpl/images/buttonTypeBRight.gif b/modules/editor/skins/default/images/buttonTypeBRight.gif similarity index 100% rename from modules/editor/tpl/images/buttonTypeBRight.gif rename to modules/editor/skins/default/images/buttonTypeBRight.gif diff --git a/modules/editor/tpl/images/editor_btn_ac.gif b/modules/editor/skins/default/images/editor_btn_ac.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_ac.gif rename to modules/editor/skins/default/images/editor_btn_ac.gif diff --git a/modules/editor/tpl/images/editor_btn_aj.gif b/modules/editor/skins/default/images/editor_btn_aj.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_aj.gif rename to modules/editor/skins/default/images/editor_btn_aj.gif diff --git a/modules/editor/tpl/images/editor_btn_al.gif b/modules/editor/skins/default/images/editor_btn_al.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_al.gif rename to modules/editor/skins/default/images/editor_btn_al.gif diff --git a/modules/editor/tpl/images/editor_btn_ar.gif b/modules/editor/skins/default/images/editor_btn_ar.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_ar.gif rename to modules/editor/skins/default/images/editor_btn_ar.gif diff --git a/modules/editor/tpl/images/editor_btn_b.gif b/modules/editor/skins/default/images/editor_btn_b.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_b.gif rename to modules/editor/skins/default/images/editor_btn_b.gif diff --git a/modules/editor/tpl/images/editor_btn_bg.gif b/modules/editor/skins/default/images/editor_btn_bg.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_bg.gif rename to modules/editor/skins/default/images/editor_btn_bg.gif diff --git a/modules/editor/tpl/images/editor_btn_c.gif b/modules/editor/skins/default/images/editor_btn_c.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_c.gif rename to modules/editor/skins/default/images/editor_btn_c.gif diff --git a/modules/editor/tpl/images/editor_btn_i.gif b/modules/editor/skins/default/images/editor_btn_i.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_i.gif rename to modules/editor/skins/default/images/editor_btn_i.gif diff --git a/modules/editor/tpl/images/editor_btn_id.gif b/modules/editor/skins/default/images/editor_btn_id.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_id.gif rename to modules/editor/skins/default/images/editor_btn_id.gif diff --git a/modules/editor/tpl/images/editor_btn_lh.gif b/modules/editor/skins/default/images/editor_btn_lh.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_lh.gif rename to modules/editor/skins/default/images/editor_btn_lh.gif diff --git a/modules/editor/tpl/images/editor_btn_od.gif b/modules/editor/skins/default/images/editor_btn_od.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_od.gif rename to modules/editor/skins/default/images/editor_btn_od.gif diff --git a/modules/editor/tpl/images/editor_btn_ol.gif b/modules/editor/skins/default/images/editor_btn_ol.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_ol.gif rename to modules/editor/skins/default/images/editor_btn_ol.gif diff --git a/modules/editor/tpl/images/editor_btn_tag.gif b/modules/editor/skins/default/images/editor_btn_tag.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_tag.gif rename to modules/editor/skins/default/images/editor_btn_tag.gif diff --git a/modules/editor/tpl/images/editor_btn_u.gif b/modules/editor/skins/default/images/editor_btn_u.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_u.gif rename to modules/editor/skins/default/images/editor_btn_u.gif diff --git a/modules/editor/tpl/images/editor_btn_ul.gif b/modules/editor/skins/default/images/editor_btn_ul.gif similarity index 100% rename from modules/editor/tpl/images/editor_btn_ul.gif rename to modules/editor/skins/default/images/editor_btn_ul.gif diff --git a/modules/editor/tpl/images/lineTextAreaDrag.gif b/modules/editor/skins/default/images/lineTextAreaDrag.gif similarity index 100% rename from modules/editor/tpl/images/lineTextAreaDrag.gif rename to modules/editor/skins/default/images/lineTextAreaDrag.gif diff --git a/modules/editor/skins/default/skin.xml b/modules/editor/skins/default/skin.xml new file mode 100644 index 000000000..7e2a3ed08 --- /dev/null +++ b/modules/editor/skins/default/skin.xml @@ -0,0 +1,29 @@ + + + 제로보드XE 게시판 기본 스킨(목록형) + ゼロボードXE掲示板のデフォルトスキン(リストスタイル) + Zeroboard XE Board 基本皮肤(目录型) + ZeroboardXE Basic Board Skin (List Style) + + (주)NHN + (株)NHN + (株)NHN + NHN Corp + + 디자인 : 서기정 (http://blog.naver.com/addcozy) + HTML/CSS : 정찬명 (http://naradesign.net) + + + デザイン:ソギジョン (http://blog.naver.com/addcozy) + HTML/CSS:ジョンチャンミョン (http://naradesign.net) + + + 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index fde8e8b2d..532ecbe21 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -19,29 +19,20 @@ function editorGetIFrame(upload_target_srl) { return xGetElementById(obj_id); } -// editor 초기화를 onload이벤트 후에 시작시킴 -function editorInit(upload_target_srl, resizable, height) { - xAddEventListener(window, 'load', function() { editorStart(upload_target_srl, resizable, height); }); -} - // editor 시작 (upload_target_srl로 iframe객체를 얻어서 쓰기 모드로 전환) -function editorStart(upload_target_srl, resizable, height) { - if(typeof(height)=="undefined"||!height) height = 350; +function editorStart(upload_target_srl, resizable, editor_height) { if(typeof(resizable)=="undefined"||!resizable) resizable = false; else resizable = true; - // iframe_area를 찾음 - var iframe_area = xGetElementById("editor_iframe_area_"+upload_target_srl); - //xHeight(iframe_area, height+10); - xInnerHtml(iframe_area, ''); - // iframe obj를 찾음 var iframe_obj = editorGetIFrame(upload_target_srl); if(!iframe_obj) return; + iframe_obj.style.width = '100%'; // 현 에디터를 감싸고 있는 form문을 찾아서 content object를 찾아서 내용 sync var fo_obj = iframe_obj.parentNode; while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; } + // saved document에 대한 체크 if(typeof(fo_obj._saved_doc_title)!="undefined" ) { var saved_title = fo_obj._saved_doc_title.value; @@ -61,21 +52,19 @@ function editorStart(upload_target_srl, resizable, height) { // 대상 form의 content object에서 데이터를 구함 var content = fo_obj.content.value; + if(!content && !xIE4Up) content = "
"; // iframe내의 document object var contentDocument = iframe_obj.contentWindow.document; - // editing가능하도록 설정 시작 - // 기본 내용 작성 var contentHtml = ''+ ''+ ''+ ''+ ''+ - ''+ ''+ content+ @@ -84,6 +73,7 @@ function editorStart(upload_target_srl, resizable, height) { contentDocument.designMode = 'on'; try { contentDocument.execCommand("undo", false, null); + contentDocument.execCommand("useCSS", false, true); } catch (e) { } contentDocument.open("text/html","replace"); @@ -114,7 +104,6 @@ function editorStart(upload_target_srl, resizable, height) { // 크기 변경 불가일 경우 드래그바 숨김 if(resizable == false) xGetElementById("editor_drag_bar_"+upload_target_srl).style.display = "none"; - if(typeof(fixAdminLayoutFooter)=='function') fixAdminLayoutFooter(height); } // 여러개의 편집기를 예상하여 전역 배열 변수에 form, iframe의 정보를 넣음 @@ -129,7 +118,7 @@ function _editorSync() { var field = _editorSyncList[i].field; var upload_target_srl = _editorSyncList[i].upload_target_srl; var content = editorGetContent(upload_target_srl); - if(typeof(content)=='undefined'||!content) continue; + if(typeof(content)=='undefined') continue; field.value = content; } setTimeout(_editorSync, 1000); @@ -702,8 +691,8 @@ function eOptionClick(obj) { } // Editor Info Close -function closeEditorInfo() { - xGetElementById('editorInfo').style.display='none'; +function closeEditorInfo(upload_target_srl) { + xGetElementById('editorInfo_'+upload_target_srl).style.display='none'; var expire = new Date(); expire.setTime(expire.getTime()+ (7000 * 24 * 3600000)); xSetCookie('EditorInfo', '1', expire); diff --git a/modules/editor/tpl/js/uploader.js b/modules/editor/tpl/js/uploader.js index 32bd31490..21233d0f0 100755 --- a/modules/editor/tpl/js/uploader.js +++ b/modules/editor/tpl/js/uploader.js @@ -93,7 +93,7 @@ function editor_display_uploaded_file(upload_target_srl) { _prev_upload_target_srl = 0; } else return; } - var url = "./?act=procFileDelete&upload_target_srl="+upload_target_srl+"&mid="+current_url.getQuery('mid'); + var url = request_uri + "?act=procFileDelete&upload_target_srl="+upload_target_srl+"&mid="+current_url.getQuery('mid'); // iframe에 url을 보내버림 var iframe_obj = xGetElementById('tmp_upload_iframe'); @@ -160,7 +160,7 @@ function editor_upload_clear_list(upload_target_srl) { while(obj.options.length) { obj.remove(0); } - var preview_obj = xGetElementById('uploaded_file_preview_box_'+upload_target_srl); + var preview_obj = xGetElementById('preview_uploaded_'+upload_target_srl); xInnerHtml(preview_obj,'') } @@ -223,22 +223,30 @@ function editor_preview(sel_obj, upload_target_srl) { function editor_remove_file(upload_target_srl) { var obj = xGetElementById('uploaded_file_list_'+upload_target_srl); if(obj.options.length<1) return; - var file_srl = obj.options[obj.selectedIndex].value; - if(!file_srl) return; // 삭제하려는 파일의 정보를 챙김;; var fo_obj = obj; while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; } var mid = fo_obj.mid.value; - var url = "./?act=procFileDelete&upload_target_srl="+upload_target_srl+"&file_srl="+file_srl+"&mid="+current_url.getQuery('mid'); - // iframe에 url을 보내버림 + // 빈 iframe 구함 var iframe_obj = xGetElementById('tmp_upload_iframe'); if(!iframe_obj) return; - iframe_obj.contentWindow.document.location.href=url; + for(var i=0;i"; + editorReplaceHTML(iframe_obj, text); + // 이미지외의 경우는 multimedia_link 컴포넌트 연결 + } else { + var text = "\"\""; + editorReplaceHTML(iframe_obj, text); + } + + // binary파일의 경우 url_link 컴포넌트 연결 } else { - openComponent("multimedia_link", upload_target_srl, uploaded_filename); - } - - // binary파일의 경우 url_link 컴포넌트 연결 - } else { - var fo_obj = obj; - while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; } - var mid = fo_obj.mid.value; - var url = "./?module=file&act=procFileDownload&file_srl="+file_srl+"&sid="+sid; - openComponent("url_link", upload_target_srl, url); - } + var mid = fo_obj.mid.value; + var url = request_uri+"/?module=file&act=procFileDownload&file_srl="+file_srl+"&sid="+sid; + var text = ""+filename+"
\n"; + editorReplaceHTML(iframe_obj, text); + } + } } diff --git a/modules/editor/tpl/lang/en.lang.php b/modules/editor/tpl/lang/en.lang.php deleted file mode 100644 index 9ac34d1ef..000000000 --- a/modules/editor/tpl/lang/en.lang.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @brief English Language Pack (Basic Things) - **/ - - $lang->edit->fontname = 'Font'; - $lang->edit->fontsize = 'Size'; - $lang->edit->use_paragraph = 'Paragraph Function'; - $lang->edit->fontlist = array( - "Gulim", - "Dodum", - "Batang", - "Goongseo", - "times", - "Courier", - "Tahoma", - "Arial", - ); - - $lang->edit->header = "Style"; - $lang->edit->header_list = array( - "h1" => "Subject 1", - "h2" => "Subject 2", - "h3" => "Subject 3", - "h4" => "Subject 4", - "h5" => "Subject 5", - "h6" => "Subject 6", - ); - - $lang->edit->submit = 'Submit'; - - $lang->edit->help_fontcolor = "Select font color"; - $lang->edit->help_fontbgcolor = "Select background color of font"; - $lang->edit->help_bold = "Make font bold"; - $lang->edit->help_italic = "Make italic font"; - $lang->edit->help_underline = "Underline font"; - $lang->edit->help_strike = "Strike font"; - $lang->edit->help_redo = "Redo"; - $lang->edit->help_undo = "Undo"; - $lang->edit->help_align_left = "Align left"; - $lang->edit->help_align_center = "Align center"; - $lang->edit->help_align_right = "Align right"; - $lang->edit->help_add_indent = "Add indent"; - $lang->edit->help_remove_indent = "Remove indent"; - $lang->edit->help_list_number = "Apply number list"; - $lang->edit->help_list_bullet = "Apply bullet list"; - $lang->edit->help_use_paragrapth = "Press Ctrl+Enter to use paragraph. (Press Alt+S to save)"; - - $lang->edit->upload = 'Attachment'; - $lang->edit->upload_file = 'Attach'; - $lang->edit->link_file = 'Insert to Content'; - $lang->edit->delete_selected = 'Delete Selected'; - - $lang->edit->icon_align_article = 'Occupy a paragraph'; - $lang->edit->icon_align_left = 'Align Left'; - $lang->edit->icon_align_middle = 'Align Center'; - $lang->edit->icon_align_right = 'Align Right'; - - $lang->about_dblclick_in_editor = 'You are able to set detail component configure by double-clicking on background, text, images, or quotations'; -?> diff --git a/modules/editor/tpl/lang/jp.lang.php b/modules/editor/tpl/lang/jp.lang.php deleted file mode 100644 index ccccecc1f..000000000 --- a/modules/editor/tpl/lang/jp.lang.php +++ /dev/null @@ -1,62 +0,0 @@ - 翻訳:RisaPapa - * @brief 日本語言語パッケージ(基本的な内容のみ) - **/ - - $lang->edit->fontname = 'フォント'; - $lang->edit->fontsize = 'サイズ'; - $lang->edit->use_paragraph = '段落機能'; - $lang->edit->fontlist = array( - "MS Pゴシック", - "MS P明朝", - "Osaka-等幅", - "ヒラギノ角ゴ Pro W3", - "times", - "Courier", - "Tahoma", - "Arial", - ); - - $lang->edit->header = "見出し"; - $lang->edit->header_list = array( - "h1" => "見出し1", - "h2" => "見出し2", - "h3" => "見出し3", - "h4" => "見出し4", - "h5" => "見出し5", - "h6" => "見出し6", - ); - - $lang->edit->submit = '送信'; - - $lang->edit->help_fontcolor = "テキストの色を指定します。"; - $lang->edit->help_fontbgcolor = "テキストの背景色を指定します。"; - $lang->edit->help_bold = "テキストを太字に指定します。"; - $lang->edit->help_italic = "テキストを斜体にします。"; - $lang->edit->help_underline = "テキストに下線(アンダーライン)を引きます。"; - $lang->edit->help_strike = "打ち消し線を引きます。"; - $lang->edit->help_redo = "直前に取り消した処理をもう一度繰り返して実行します。"; - $lang->edit->help_undo = "直前に行った操作や処理を取り消し元に戻します。"; - $lang->edit->help_align_left = "テキストを左揃えで表示します。"; - $lang->edit->help_align_center = "テキストを中央揃えで表示します。"; - $lang->edit->help_align_right = "テキストを右揃えで表示します。"; - $lang->edit->help_add_indent = "テキストの行頭の位置を右に寄せます。"; - $lang->edit->help_remove_indent = "インデント(字下げ)を除去します。"; - $lang->edit->help_list_number = "リスト項目に数字で順序を付けます。"; - $lang->edit->help_list_bullet = "記号でリスト項目を記述します。"; - $lang->edit->help_use_paragrapth = "段落機能を使用する場合は、「Ctrl+Enter」を押します(書き終わった後、「Alt+S」を押すと保存されます)。"; - - $lang->edit->upload = '添付'; - $lang->edit->upload_file = 'ファイル添付'; - $lang->edit->link_file = 'テキスト挿入'; - $lang->edit->delete_selected = '選択リスト削除'; - - $lang->edit->icon_align_article = '一段落'; - $lang->edit->icon_align_left = '左揃え'; - $lang->edit->icon_align_middle = '中央揃え'; - $lang->edit->icon_align_right = '右揃え'; - - $lang->about_dblclick_in_editor = '背景、文字、イメージ、引用文の上にカーソルを合わせ,ダブルクリックすると詳細設定できるコンポーネントを表示します。'; -?> diff --git a/modules/editor/tpl/lang/ko.lang.php b/modules/editor/tpl/lang/ko.lang.php deleted file mode 100644 index 0d462a2db..000000000 --- a/modules/editor/tpl/lang/ko.lang.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @brief 한국어 언어팩 (기본적인 내용만 수록) - **/ - - $lang->edit->fontname = '글꼴'; - $lang->edit->fontsize = '크기'; - $lang->edit->use_paragraph = '문단기능'; - $lang->edit->fontlist = array( - "굴림", - "돋움", - "바탕", - "궁서", - "times", - "Courier", - "Tahoma", - "Arial", - ); - - $lang->edit->header = "형식"; - $lang->edit->header_list = array( - "h1" => "제목 1", - "h2" => "제목 2", - "h3" => "제목 3", - "h4" => "제목 4", - "h5" => "제목 5", - "h6" => "제목 6", - ); - - $lang->edit->submit = '확인'; - - $lang->edit->help_fontcolor = "글자의 색상을 지정합니다"; - $lang->edit->help_fontbgcolor = "글자의 배경색상을 지정합니다"; - $lang->edit->help_bold = "글자를 진하게 합니다"; - $lang->edit->help_italic = "글자를 기울이게 합니다"; - $lang->edit->help_underline = "밑줄을 긋습니다"; - $lang->edit->help_strike = "취소선을 긋습니다"; - $lang->edit->help_redo = "다음 동작으로 돌아갑니다"; - $lang->edit->help_undo = "이전 동작으로 돌아갑니다"; - $lang->edit->help_align_left = "왼쪽 정렬을 합니다"; - $lang->edit->help_align_center = "가운데 정렬을 합니다"; - $lang->edit->help_align_right = "오른쪽 정렬을 합니다"; - $lang->edit->help_add_indent = "들여쓰기를 합니다"; - $lang->edit->help_remove_indent = "들여쓰기를 제거합니다"; - $lang->edit->help_list_number = "숫자로된 목록을 적용합니다"; - $lang->edit->help_list_bullet = "기호로된 목록을 적용합니다"; - $lang->edit->help_use_paragrapth = "문단 나누기를 하시려면 ctrl-엔터를 누르시면 됩니다. (글 작성완료후 alt-S를 누르면 저장이 됩니다)"; - - $lang->edit->upload = '첨부'; - $lang->edit->upload_file = '파일 첨부'; - $lang->edit->link_file = '본문 삽입'; - $lang->edit->delete_selected = '선택 삭제'; - - $lang->edit->icon_align_article = '한 문단을 차지'; - $lang->edit->icon_align_left = '글의 왼쪽으로'; - $lang->edit->icon_align_middle = '가운데 정렬'; - $lang->edit->icon_align_right = '글의 우측으로'; - - $lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다'; -?> diff --git a/modules/editor/tpl/lang/zh-CN.lang.php b/modules/editor/tpl/lang/zh-CN.lang.php deleted file mode 100644 index 2c5dd200a..000000000 --- a/modules/editor/tpl/lang/zh-CN.lang.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @brief 简体中文语言包 (只收录基本内容) - **/ - - $lang->edit->fontname = '字体'; - $lang->edit->fontsize = '大小'; - $lang->edit->use_paragraph = '段落功能'; - $lang->edit->fontlist = array( - "仿宋_GB2312", - "黑体", - "楷体_GB2312", - "宋体", - "times", - "Courier", - "Tahoma", - "Arial", - ); - - $lang->edit->header = "样式"; - $lang->edit->header_list = array( - "h1" => "标题 1", - "h2" => "标题 2", - "h3" => "标题 3", - "h4" => "标题 4", - "h5" => "标题 5", - "h6" => "标题 6", - ); - - $lang->edit->submit = '确认'; - - $lang->edit->help_fontcolor = "文本颜色"; - $lang->edit->help_fontbgcolor = "背景颜色"; - $lang->edit->help_bold = "粗体"; - $lang->edit->help_italic = "斜体"; - $lang->edit->help_underline = "下划线"; - $lang->edit->help_strike = "取消线"; - $lang->edit->help_redo = "重新操作"; - $lang->edit->help_undo = "返回操作"; - $lang->edit->help_align_left = "左对齐"; - $lang->edit->help_align_center = "居中对齐"; - $lang->edit->help_align_right = "右对齐"; - $lang->edit->help_add_indent = "缩进"; - $lang->edit->help_remove_indent = "清除缩进"; - $lang->edit->help_list_number = "有序列表"; - $lang->edit->help_list_bullet = "无序列表"; - $lang->edit->help_use_paragrapth = "分段请按 ctrl+回车. (发表主题快捷键:alt+S)"; - - $lang->edit->upload = '上传'; - $lang->edit->upload_file = '上传附件'; - $lang->edit->link_file = '插入内容'; - $lang->edit->delete_selected = '删除所选'; - - $lang->edit->icon_align_article = '占一个段落'; - $lang->edit->icon_align_left = '文本左侧'; - $lang->edit->icon_align_middle = '居中对齐'; - $lang->edit->icon_align_right = '文本右侧'; - - $lang->about_dblclick_in_editor = '双击背景, 文本, 图片, 引用即可对其相关组件进行详细设置。'; -?> diff --git a/modules/integration_search/lang/en.lang.php b/modules/integration_search/lang/en.lang.php index 593e62f07..a94571dec 100644 --- a/modules/integration_search/lang/en.lang.php +++ b/modules/integration_search/lang/en.lang.php @@ -18,7 +18,7 @@ 'title' => 'Subject', 'content' => 'Content', 'title_content' => 'Subject+Content', - //'comment' => '댓글', + //'comment' => 'Comment', ); $lang->is_sort_option = array( diff --git a/modules/layout/layout.model.php b/modules/layout/layout.model.php index a5d1ffeec..e0c1f00a6 100644 --- a/modules/layout/layout.model.php +++ b/modules/layout/layout.model.php @@ -108,7 +108,7 @@ if(!$layout_srl) $cache_file = sprintf('./files/cache/layout/%s.%s.cache.php', $layout, Context::getLangType()); else $cache_file = sprintf('./files/cache/layout/%s.%s.cache.php', $layout_srl, Context::getLangType()); - if(file_exists($cache_file)&&filectime($cache_file)>filectime($xml_file)) { + if(file_exists($cache_file)&&filemtime($cache_file)>filemtime($xml_file)) { @include($cache_file); if($layout_info->extra_var && $vars) { diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 6446368d0..75f80244a 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -75,7 +75,7 @@ $lang->cmd_signup = 'Join'; $lang->cmd_modify_member_info = 'Modify Member Info'; $lang->cmd_modify_member_password = 'Change Password'; - $lang->cmd_view_member_info = 'My Info'; + $lang->cmd_view_member_info = 'Member Info'; $lang->cmd_leave = 'Leave'; $lang->cmd_member_list = 'Member List'; diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 3c65e9035..79b8bff35 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -829,10 +829,11 @@ * @brief 서명을 파일로 저장 **/ function putSignature($member_srl, $signature) { - $signature = removeHackTag($signature); + $signature = trim(removeHackTag($signature)); $path = sprintf('files/member_extra_info/signature/%s/', getNumberingPath($member_srl)); $filename = sprintf('%s%d.signature.php', $path, $member_srl); - if(!trim($signature) || trim(strtolower($signature))=='
') return @unlink($filename); + + if(!$signature || !strip_tags($signature)) return @unlink($filename); $buff = sprintf('%s', $signature); FileHandler::makeDir($path); diff --git a/modules/menu/lang/en.lang.php b/modules/menu/lang/en.lang.php index 3de86df16..9defe0f8e 100644 --- a/modules/menu/lang/en.lang.php +++ b/modules/menu/lang/en.lang.php @@ -38,7 +38,7 @@ $lang->msg_cannot_delete_for_child = 'Cannot delete a menu having a child menu.'; - $lang->about_title = 'Enter a title which can be easily recognized when linked to a module.'; + $lang->about_title = 'Please input the title that is easy to verify when connecting to module.'; $lang->about_menu_management = "Menu management enables you to consist menu in the selected layout.\nYou can create menu upto setted depth and can enter information in details by clicking the menu.\nMenu will be expanded by cliking the folder image.\nIf menu is not shown normally, refresh the information by clicking the button \"Re-create cache file\".\n* Menu created over the depth limit may not be shown properly."; $lang->about_menu_name = 'The name will be shown as a menu name if it is not an admin or image button.'; $lang->about_menu_url = "It is the menu URL when select the menu.
You may enter only id value to link to other module.
If no contents exist, nothing will happen even though you click the menu."; diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 068589faa..d1c00e505 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -380,10 +380,11 @@ $active_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->active_btn); $selected = '"'.implode('","',$child_output['url_list']).'"'; $child_buff = $child_output['buff']; + $expand = $node->expand; // 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","text"=>(%s?"%s":""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"list"=>array(%s)', + '"node_srl"=>"%s","text"=>(%s?"%s":""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', $node->menu_item_srl, $group_check_code, $name, @@ -397,6 +398,7 @@ $active_btn, $selected, $selected, + $expand, $child_buff ); diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 1682ad92d..505f67323 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -292,7 +292,7 @@ $cache_file = sprintf("./files/cache/module_info/%s.%s.php", $module, Context::getLangType()); // 캐시 파일이 없거나 캐시 파일이 xml 파일보다 오래되었으면 내용 다시 갱신 - if(!file_exists($cache_file) || filectime($cache_file) - {$lang->cmd_page_modify} + {$lang->cmd_page_modify} {$lang->cmd_list} diff --git a/modules/point/lang/en.lang.php b/modules/point/lang/en.lang.php index 4f6113166..2ca9ba4be 100644 --- a/modules/point/lang/en.lang.php +++ b/modules/point/lang/en.lang.php @@ -9,7 +9,7 @@ $lang->level = "Level"; $lang->about_point_module = "You can grant points on writing/adding comments/uploading/downloading.
But point module only configure settings, and the point will be accumulated only when point addon is activated"; - $lang->about_act_config = "Each module like board/blog has action such as writing/deleting/adding comments/deleting comments.
You can just add act value to link module except board/blog with point system.
Comma(,) will distinguish multiple values."; + $lang->about_act_config = "Each module like board/blog has actions such as writing/deleting/adding comments/deleting comments.
You can just add act value to link modules with point system except board/blog.
Comma(,) will distinguish multiple values."; $lang->max_level = 'Max Level'; $lang->about_max_level = 'You can set the max level. Level icons should be considered and 1000 is the maximum value you can set'; diff --git a/modules/spamfilter/lang/en.lang.php b/modules/spamfilter/lang/en.lang.php index 8aac16027..2e307ee4b 100644 --- a/modules/spamfilter/lang/en.lang.php +++ b/modules/spamfilter/lang/en.lang.php @@ -6,27 +6,27 @@ **/ // action related - $lang->cmd_denied_ip = "Black listed IPs"; - $lang->cmd_denied_word = "Black listed words"; + $lang->cmd_denied_ip = "IP Address Blacklist"; + $lang->cmd_denied_word = "Word Blacklist"; // general word $lang->spamfilter = "Spam filter"; - $lang->denied_ip = "IP blacklist"; - $lang->interval = "Interval for spam process"; - $lang->limit_count = "No. of limit"; + $lang->denied_ip = "IP to blacklist"; + $lang->interval = "Interval for spam filtering"; + $lang->limit_count = "No. of posting limitation"; $lang->check_trackback = "Check trackback"; - $lang->word = "word"; + $lang->word = "Word"; // for description word - $lang->about_interval = "It is a time setting to block posting an article within the time."; - $lang->about_limit_count = "If you try to post an article more times over the limit within the setted time,\n it will be recognized as a spam, and your IP will be blocked."; - $lang->about_denied_ip = "Using *, You can block all IP addresses of 127.0.0.* patterned address."; - $lang->about_denied_word = "When you add a word to Black Listed Words,\n you can block an article contained the word not to be posted."; + $lang->about_interval = "All articles attempted for posting within the assigned time will be blocked."; + $lang->about_limit_count = "If you exceed the posting limitation,\n your article will be recognized as a spam, and your IP address will be blacklisted."; + $lang->about_denied_ip = "You can blacklist IP address range like 127.0.0.* by using *."; + $lang->about_denied_word = "When you add a word to Word Blacklist,\n articles with that word will not be posted."; $lang->about_check_trackback = "Only the trackback by one IP per an article could be allowed."; // to post a message - $lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you try it again and again, your IP may be listed as a IP blacklist.'; - $lang->msg_alert_denied_word = 'The word "%s" is not allowed to be used.'; - $lang->msg_alert_registered_denied_ip = 'Your IP was listed as a IP blacklist,\n so you may have limitations on normal use of this site.\n If you have any questions on that matter, please contact to the site administrator.'; + $lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you try it again and again, your IP address may be blacklisted.'; + $lang->msg_alert_denied_word = 'The word "%s" is not allowed to be posted.'; + $lang->msg_alert_registered_denied_ip = 'Your IP address was blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator.'; $lang->msg_alert_trackback_denied = 'Only one trackback per an article is allowed.'; ?> diff --git a/modules/ttimporter/conf/info.xml b/modules/ttimporter/conf/info.xml new file mode 100644 index 000000000..4ce566322 --- /dev/null +++ b/modules/ttimporter/conf/info.xml @@ -0,0 +1,31 @@ + + + TatterTools 데이터 이전 + TatterTools 数据导入 + TTデータ移転 + Transfer data from TatterTools + + 제로 + zero + Zero + Zero + + 태터툴즈의 백업파일을 제로보드XE에 입력을 하는 모듈입니다. + 첨부파일 포함하지 않은 백업파일이 필요합니다. + 첨부파일은 원주소에서 직접 다운로드를 하게 됩니다. + + + 导入TatterTools的备份文件到Zeroboard XE的模块。 + 需要不包含附件的备份文件。 + 附件将在原地址直接下载。 + + + TatterToolsのバックアップファイルをゼロボードXE用にデータの変換を行うモジュールです。添付ファイルを含まないバックアップファイルが必要です。添付ファイルは、元のアドレスからダウンロードします。 + + + Module for inputting TattertTools' backup file to ZeroboardXE. + Backup file without attachment is required. + Attachments will be downloaded from the original address. + + + diff --git a/modules/ttimporter/conf/module.xml b/modules/ttimporter/conf/module.xml new file mode 100644 index 000000000..a0047cc78 --- /dev/null +++ b/modules/ttimporter/conf/module.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/modules/ttimporter/lang/en.lang.php b/modules/ttimporter/lang/en.lang.php new file mode 100644 index 000000000..b31110e03 --- /dev/null +++ b/modules/ttimporter/lang/en.lang.php @@ -0,0 +1,21 @@ +ttimporter = "Import Tetter Tools data"; + $lang->about_tt_importer = "You can input the Tetter Tools data into the module you want.\n The attached file will be directly downloaded via web, so please be sure to enable the original Tetter Tools blog."; + + $lang->target_module = "Target module"; + $lang->target_file = "Target xml file"; + $lang->target_url = "Blog URL"; + + $lang->cmd_continue = 'Continue'; + + $lang->msg_no_xml_file = 'Could not find the XML file! Please check the URL.'; + $lang->msg_invalid_xml_file = 'Invalid XML file type!'; + $lang->msg_importing = 'No. of importing: %d (if stopped long time, please click the "Continue" button.)'; + $lang->msg_import_finished = 'No. of imported: %d (according to condition, some data may not be imported properly.)'; +?> diff --git a/modules/ttimporter/lang/jp.lang.php b/modules/ttimporter/lang/jp.lang.php new file mode 100644 index 000000000..96c389050 --- /dev/null +++ b/modules/ttimporter/lang/jp.lang.php @@ -0,0 +1,21 @@ +ttimporter = "TTデータの移転"; + $lang->about_tt_importer = "TatterTools データを希望するモジュールへデータを変換し、入力を行います。添付ファイルは、元のURLから直接ダウンロードするため、元のTatterTools が作動するようにしておいてください。"; + + $lang->target_module = "対象モジュール"; + $lang->target_file = "対象XMLファイル"; + $lang->target_url = "ブログURL"; + + $lang->cmd_continue = '続ける'; + + $lang->msg_no_xml_file = 'XMLファイルが見つかりません。パスを確認してください。'; + $lang->msg_invalid_xml_file = '正しくないフォーマットのXMLファイルです。'; + $lang->msg_importing = '%d個を変換・入力中です。止まっている場合は「続ける」ボタンをクリックしてください。'; + $lang->msg_import_finished = '%d個のデータを変換し、入力が完了しました。正しく変換入力されていないデータがある場合もあります。'; +?> diff --git a/modules/ttimporter/lang/ko.lang.php b/modules/ttimporter/lang/ko.lang.php new file mode 100644 index 000000000..92eb2b85b --- /dev/null +++ b/modules/ttimporter/lang/ko.lang.php @@ -0,0 +1,21 @@ +ttimporter = "태터툴즈 데이터 이전"; + $lang->about_tt_importer = "태터툴즈 데이터를 원하는 모듈에 입력을 할 수 있습니다.\n첨부파일은 웹으로 직접 다운로드를 받으니 꼭 원래 태터툴즈 블로그를 활성화 시켜 주셔야 합니다."; + + $lang->target_module = "대상 모듈"; + $lang->target_file = "대상 xml파일"; + $lang->target_url = "블로그URL"; + + $lang->cmd_continue = '계속진행'; + + $lang->msg_no_xml_file = 'XML파일을 찾을 수 없습니다. 경로를 다시 확인해주세요'; + $lang->msg_invalid_xml_file = '잘못된 형식의 XML파일입니다'; + $lang->msg_importing = '%d개를 입력중입니다. (계속 멈추어 있으면 "계속진행" 버튼을 클릭해주세요)'; + $lang->msg_import_finished = '%d개의 데이터 입력이 완료되었습니다. 상황에 따라 입력되지 못한 데이터가 있을 수 있습니다.'; +?> diff --git a/modules/ttimporter/lang/zh-CN.lang.php b/modules/ttimporter/lang/zh-CN.lang.php new file mode 100644 index 000000000..a6361511f --- /dev/null +++ b/modules/ttimporter/lang/zh-CN.lang.php @@ -0,0 +1,21 @@ +ttimporter = "TatterTools 数据导入"; + $lang->about_tt_importer = "可以把TatterTools 的数据导入到指定的模块当中。\n因附件要在网站直接下载,所以导入前必须先激活原TatterTools 博客。"; + + $lang->target_module = "对象模块"; + $lang->target_file = "对象xml文件"; + $lang->target_url = "博客URL"; + + $lang->cmd_continue = '继续进行'; + + $lang->msg_no_xml_file = '找不到XML文件。请重新确认路径'; + $lang->msg_invalid_xml_file = '错误的XML文件格式。'; + $lang->msg_importing = '正在输入%d个。(长时间停止响应时请按“继续进行”按钮)'; + $lang->msg_import_finished = '已完成%d个数据导入。根据情况可能会有没有被导入的数据。'; +?> diff --git a/modules/ttimporter/tpl/filter/import_tt.xml b/modules/ttimporter/tpl/filter/import_tt.xml new file mode 100644 index 000000000..cf5182a1c --- /dev/null +++ b/modules/ttimporter/tpl/filter/import_tt.xml @@ -0,0 +1,14 @@ + +
+ + + + + + + + + + + +
diff --git a/modules/ttimporter/tpl/index.html b/modules/ttimporter/tpl/index.html new file mode 100644 index 000000000..bd8b1cc96 --- /dev/null +++ b/modules/ttimporter/tpl/index.html @@ -0,0 +1,46 @@ + + + +

{$lang->ttimporter} {$lang->cmd_management}

+ + +
{nl2br($lang->about_tt_importer)}
+ +
+ + + + + + + + + + + + + + + + + +
{$lang->target_module} + +
{$lang->target_file}
{$lang->target_url}
+ +
+ +
+ + + +
diff --git a/modules/ttimporter/tpl/js/importer_admin.js b/modules/ttimporter/tpl/js/importer_admin.js new file mode 100644 index 000000000..cef481fb6 --- /dev/null +++ b/modules/ttimporter/tpl/js/importer_admin.js @@ -0,0 +1,29 @@ +/** + * @file modules/ttimporter/js/importer_admin.js + * @author zero (zero@nzeo.com) + * @brief importer에서 사용하는 javascript + **/ + +/* Step Complete Import */ +function completeImport(ret_obj) { + var message = ret_obj['message']; + var is_finished = ret_obj['is_finished']; + var position = ret_obj['position']; + + xGetElementById("import_status").style.display = "block"; + + if(is_finished=='Y') { + alert(ret_obj["message"]); + location.href = location.href; + } else { + var fo_obj = xGetElementById('fo_import'); + fo_obj.position.value = position; + xInnerHtml('import_status', message); + procFilter(fo_obj, import_tt); + } +} + +function doManualProcess() { + var fo_obj = xGetElementById('fo_import'); + procFilter(fo_obj, import_tt); +} diff --git a/modules/ttimporter/ttimporter.admin.controller.php b/modules/ttimporter/ttimporter.admin.controller.php new file mode 100644 index 000000000..f5040ce9b --- /dev/null +++ b/modules/ttimporter/ttimporter.admin.controller.php @@ -0,0 +1,264 @@ +module_srl = Context::get('module_srl'); + $xml_file = Context::get('xml_file'); + $this->url = Context::get('url'); + $this->position = (int)Context::get('position'); + if(substr($this->url,-1)!='/') $this->url .= '/'; + + // 파일을 찾을 수 없으면 에러 표시 + if(!file_exists($xml_file)) return new Object(-1,'msg_no_xml_file'); + + $this->oXml = new XmlParser(); + + $oDocumentModel = &getModel('document'); + $tmp_category_list = $oDocumentModel->getCategoryList($this->module_srl); + if(count($tmp_category_list)) { + foreach($tmp_category_list as $key => $val) $this->category_list[$val->title] = $key; + } else { + $this->category_list = array(); + } + + // module_srl이 있으면 module데이터로 판단하여 처리, 아니면 회원정보로.. + $is_finished = $this->importDocument($xml_file); + + if($is_finished) { + $this->add('is_finished', 'Y'); + $this->setMessage( sprintf(Context::getLang('msg_import_finished'), $this->imported_count) ); + } else { + $this->add('position', $this->imported_count); + $this->add('is_finished', 'N'); + $this->setMessage( sprintf(Context::getLang('msg_importing'), $this->imported_count) ); + } + } + + /** + * @brief 게시물정보 import + **/ + function importDocument($xml_file) { + $filesize = filesize($xml_file); + + if($filesize<1) return; + + $this->oDocumentController = &getController('document'); + $this->oFileController = &getController('file'); + $this->oCommentController = &getController('comment'); + $this->oTrackbackController = &getController('trackback'); + + $is_finished = true; + + $fp = @fopen($xml_file, "r"); + if($fp) { + $buff = ''; + while(!feof($fp)) { + $str = fread($fp,1024); + $buff .= $str; + + $buff = preg_replace_callback("!(.*?)<\/category>!is", array($this, '_parseCategoryInfo'), trim($buff)); + $buff = preg_replace_callback("!!is", array($this, '_importDocument'), trim($buff)); + + if($this->position+$this->limit_count <= $this->imported_count) { + $is_finished = false; + break; + } + } + fclose($fp); + } + + return $is_finished; + } + + function _insertAttachment($matches) { + $xml_doc = $this->oXml->parse($matches[0]); + + $filename = $xml_doc->attachment->name->body; + $url = sprintf("%sattach/1/%s", $this->url, $filename); + + $tmp_filename = './files/cache/tmp_uploaded_file'; + if(FileHandler::getRemoteFile($url, $tmp_filename)) { + $file_info['tmp_name'] = $tmp_filename; + $file_info['name'] = $filename; + $this->oFileController->insertFile($file_info, $this->module_srl, $this->document_srl, 0, true); + $this->uploaded_count++; + } + @unlink($tmp_filename); + } + + function _importDocument($matches) { + if($this->position > $this->imported_count) { + $this->imported_count++; + return; + } + + $this->uploaded_count = 0; + + $xml_doc = $this->oXml->parse($matches[0]); + + // 문서 번호와 내용 미리 구해 놓기 + $this->document_srl = $args->document_srl = getNextSequence(); + $args->content = $xml_doc->post->content->body; + + // 첨부파일 미리 등록 + preg_replace_callback("!!is", array($this, '_insertAttachment'), $matches[0]); + + // 컨텐츠의 내용 수정 (이미지 첨부파일 관련) + $args->content = preg_replace("!(\[##\_1)([a-zA-Z]){1}\|([^\|]*)\|([^\|]*)\|([^\]]*)\]!is", sprintf('', $this->module_srl, $args->document_srl), $args->content); + + if($xml_doc->post->comment && !is_array($xml_doc->post->comment)) $xml_doc->post->comment = array($xml_doc->post->comment); + + $logged_info = Context::get('logged_info'); + + // 문서 입력 + $args->module_srl = $this->module_srl; + $args->category_srl = $this->category_list[$xml_doc->post->category->body]; + $args->is_notice = 'N'; + $args->is_secret = 'N'; + $args->title = $xml_doc->post->title->body; + $args->readed_count = 0; + $args->voted_count = 0; + $args->comment_count = count($xml_doc->post->comment); + $args->trackback_count = 0; + $args->uploaded_count = $this->uploaded_count; + $args->password = ''; + $args->nick_name = $logged_info->nick_name; + $args->member_srl = $logged_info->member_srl; + $args->user_id = $logged_info->user_id; + $args->user_name = $logged_info->user_name; + $args->email_address = $logged_info->email_address; + $args->homepage = $logged_info->homepage; + + $tag_list = array(); + $tags = $xml_doc->post->tag; + if($tags && !is_array($tags)) $tags = array($tags); + for($i=0;$ibody; + } + $args->tags = implode(',',$tag_list); + $args->regdate = date("YmdHis", $xml_doc->post->created->body); + $args->ipaddress = ''; + $args->allow_comment = $xml_doc->post->acceptcomment->body?'Y':'N'; + $args->lock_comment = 'N'; + $args->allow_trackback = $xml_doc->post->accepttrackback->body?'Y':'N'; + + $output = $this->oDocumentController->insertDocument($args, true); + + if($output->toBool()) { + + // 코멘트 입력 + $comments = $xml_doc->post->comment; + if(count($comments)) { + foreach($comments as $key => $val) { + unset($comment_args); + $comment_args->document_srl = $args->document_srl; + $comment_args->comment_srl = getNextSequence(); + $comment_args->module_srl = $this->module_srl; + $comment_args->parent_srl = 0; + $comment_args->content = $val->content->body; + $comment_args->password = ''; + $comment_args->nick_name = $val->commenter->name->body; + $comment_args->user_id = ''; + $comment_args->user_name = ''; + $comment_args->member_srl = 0; + $comment_args->email_address = ''; + $comment_args->regdate = date("YmdHis",$val->written->body); + $comment_args->ipaddress = $val->commenter->ip->body; + $this->oCommentController->insertComment($comment_args, true); + + if($val->comment) { + $val = $val->comment; + unset($child_comment_args); + $child_comment_args->document_srl = $args->document_srl; + $child_comment_args->comment_srl = getNextSequence(); + $child_comment_args->module_srl = $this->module_srl; + $child_comment_args->parent_srl = $comment_args->comment_srl; + $child_comment_args->content = $val->content->body; + $child_comment_args->password = ''; + $child_comment_args->nick_name = $val->commenter->name->body; + $child_comment_args->user_id = ''; + $child_comment_args->user_name = ''; + $child_comment_args->member_srl = 0; + $child_comment_args->email_address = ''; + $child_comment_args->regdate = date("YmdHis",$val->written->body); + $child_comment_args->ipaddress = $val->commenter->ip->body; + $this->oCommentController->insertComment($child_comment_args, true); + } + + } + } + + /* + // 트랙백 입력 + $trackbacks = $xml_doc->document->trackbacks->trackback; + if($trackbacks && !is_array($trackbacks)) $trackbacks = array($trackbacks); + if(count($trackbacks)) { + foreach($trackbacks as $key => $val) { + $trackback_args->document_srl = $args->document_srl; + $trackback_args->module_srl = $this->module_srl; + $trackback_args->url = $val->url->body; + $trackback_args->title = $val->title->body; + $trackback_args->blog_name = $val->blog_name->body; + $trackback_args->excerpt = $val->excerpt->body; + $trackback_args->regdate = $val->regdate->body; + $trackback_args->ipaddress = $val->ipaddress->body; + $this->oTrackbackController->insertTrackback($trackback_args, true); + } + } + */ + } + + $this->imported_count ++; + return ''; + } + + /** + * @brief 정보를 읽어서 정보를 구함 + **/ + function _parseCategoryInfo($matches) { + $xml_doc = $this->oXml->parse($matches[0]); + if(!$xml_doc->category->priority) return $matches[0]; + + $title = trim($xml_doc->category->name->body); + if(!$title || $this->category_list[$title]) return; + + $oDocumentController = &getAdminController('document'); + $output = $oDocumentController->insertCategory($this->module_srl, $title); + $this->category_list[$title] = $output->get('category_srl'); + } + } +?> diff --git a/modules/ttimporter/ttimporter.admin.view.php b/modules/ttimporter/ttimporter.admin.view.php new file mode 100644 index 000000000..921196a25 --- /dev/null +++ b/modules/ttimporter/ttimporter.admin.view.php @@ -0,0 +1,32 @@ +getMidList(); + Context::set('module_list', $module_list); + + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('index'); + } + + } +?> diff --git a/modules/ttimporter/ttimporter.class.php b/modules/ttimporter/ttimporter.class.php new file mode 100644 index 000000000..1d099d7dc --- /dev/null +++ b/modules/ttimporter/ttimporter.class.php @@ -0,0 +1,36 @@ +insertActionForward('ttimporter', 'view', 'dispTtimporterAdminContent'); + + return new Object(); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + return new Object(); + } + + } +?> diff --git a/modules/widget/tpl/widget_generate_code.html b/modules/widget/tpl/widget_generate_code.html index f8dae44ce..97774f520 100644 --- a/modules/widget/tpl/widget_generate_code.html +++ b/modules/widget/tpl/widget_generate_code.html @@ -21,6 +21,7 @@ {$lang->widget} {$widget_info->title} ver {$widget_info->version} + {$lang->skin} @@ -40,6 +41,7 @@
+ {$lang->widget_cache} @@ -72,7 +74,7 @@
-

{$var->description}

+

{nl2br($var->description)}

diff --git a/modules/widget/tpl/widget_generate_code_in_page.html b/modules/widget/tpl/widget_generate_code_in_page.html index 0ec4ef3a1..03920930f 100644 --- a/modules/widget/tpl/widget_generate_code_in_page.html +++ b/modules/widget/tpl/widget_generate_code_in_page.html @@ -23,6 +23,7 @@ {$lang->widget} {$widget_info->title} ver {$widget_info->version} + {$lang->skin} @@ -42,6 +43,7 @@
+ {$lang->widget_cache} @@ -74,7 +76,7 @@
-

{$var->description}

+

{nl2br($var->description)}

diff --git a/modules/widget/widget.model.php b/modules/widget/widget.model.php index c8ff39cd4..088730746 100644 --- a/modules/widget/widget.model.php +++ b/modules/widget/widget.model.php @@ -63,7 +63,7 @@ // cache 파일을 비교하여 문제 없으면 include하고 $widget_info 변수를 return $cache_file = sprintf('./files/cache/widget/%s.%s.cache.php', $widget, Context::getLangType()); - if(file_exists($cache_file)&&filectime($cache_file)>filectime($xml_file)) { + if(file_exists($cache_file)&&filemtime($cache_file)>filemtime($xml_file)) { @include($cache_file); return $widget_info; } diff --git a/widgets/image_counter/conf/info.xml b/widgets/image_counter/conf/info.xml new file mode 100644 index 000000000..8c1bb05a6 --- /dev/null +++ b/widgets/image_counter/conf/info.xml @@ -0,0 +1,81 @@ + + + 이미지 카운터 위젯 + + 제로 + + 제로보드XE의 기본 카운터를 블로그나 사이트에 달 수 있는 작은 그래프로 표시를 합니다. + 크기, 배경색등의 조건을 설정하지 않으시면 기본 설정으로 사용됩니다. + 그래프를 그리기 위해서 GD 라이브러리가 설치되어 있어야 합니다. + + + + + 가로 크기 + text + + 그래프 이미지의 가로크기를 지정하실 수 있습니다. + 지정하지 않으시면 150px로 지정되며 숫자로 입력을 해주세요. + 코드 생성 페이지의 하단에 있는 가로크기와 다르게 적용됩니다. + + + + 세로 크기 + text + + 그래프 이미지의 세로 크기를 지정하실 수 있습니다. + 지정하지 않으시면 100px로 지정되며 숫자로 입력을 해주세요. + + + + 출력 기간 + text + + 오늘부터 지정하신 출력기간 만큼의 데이터를 그래프로 출력합니다. + 숫자를 입력해주세요. (기본 지난 7일) + + + + 배경색 + text + + + + 체크 무늬 배경색 + text + #F9F9F9 + #과 6자리의 색상코드 입력해주세요]]> + + + 격자 선 색 + text + #9d9d9d + #과 6자리의 색상코드 입력해주세요]]> + + + 그래프 선색 + text + #BBBBBB + #과 6자리의 색상코드 입력해주세요]]> + + + 방문자 수 글자색 + text + #666666 + #과 6자리의 색상코드 입력해주세요]]> + + + 포인트 점 색 + text + #ed3027 + #과 6자리의 색상코드 입력해주세요]]> + + + diff --git a/widgets/image_counter/image_counter.class.php b/widgets/image_counter/image_counter.class.php new file mode 100644 index 000000000..d97d2e591 --- /dev/null +++ b/widgets/image_counter/image_counter.class.php @@ -0,0 +1,153 @@ +graph_width?$args->graph_width:150; + $graph_height = (int)$args->graph_height?$args->graph_height:100; + $day_range = (int)$args->day_range?$args->day_range:7; + if($day_range < 7) $day_range = 7; + + $bg_color = hexrgb($args->bg_color?$args->bg_color:'#FFFFFF'); + $check_bg_color = hexrgb($args->check_bg_color?$args->check_bg_color:'#F9F9F9'); + $grid_color = hexrgb($args->grid_color?$args->grid_color:'#dbdbdb'); + $unique_line_color = hexrgb($args->unique_line_color?$args->unique_line_color:'#BBBBBB'); + $unique_text_color = hexrgb($args->unique_text_color?$args->unique_text_color:'#666666'); + $point_color = hexrgb($args->point_color?$args->point_color:'#ed3027'); + + // 시작일 부터 오늘까지 일단 배열 만들어 놓기 + $start_time = ztime(date("YmdHis"))-$day_range*60*60*24; + $end_time = time(); + $day_check_falg = 0; + for($i=$start_time;$i<$end_time;$i+= 60*60*24) { + $data[date("Ymd", $i+60*60*24)] = 0; + $day_check_falg++; + if($day_check_falg>$day_range) break; + } + unset($obj); + + // 현재부터 지난 $day_range동안의 카운터 로그를 가져옴 + $obj->e_regdate = date("Ymd"); + $obj->s_regdate = date("Ymd", ztime(date("YmdHis"))-$day_range*60*60*24+1); + $output = executeQuery('widgets.image_counter.getCounterStatus', $obj); + + // 결과가 있다면 loop를 돌면서 최고/최저값을 구하고 그래프를 그릴 준비 + $max_unique_visitor = 0; + $min_unique_visitor = 99999999999; + if(count($output->data)) { + foreach($output->data as $key => $val) { + if($max_unique_visitor < $val->unique_visitor) $max_unique_visitor = $val->unique_visitor; + if($min_unique_visitor > $val->unique_visitor) $min_unique_visitor = $val->unique_visitor; + $data[$val->regdate] = $val; + } + } + + // 이미지를 그림 (이미지 위치는 ./files/cache/widget_cache/couter_graph.gif로 고정) + $image_src = "files/cache/widget_cache/couter_graph.gif"; + + // 이미지 생성 + $image = imagecreate($graph_width, $graph_height); + + // 각 종류의 색상을 지정 + $gridLine = imagecolorallocate($image, $grid_color['red'], $grid_color['green'], $grid_color['blue']); + $fillBack = imagecolorallocate($image, $bg_color['red'], $bg_color['green'], $bg_color['blue']); + $checkFillBack = imagecolorallocate($image, $check_bg_color['red'], $check_bg_color['green'], $check_bg_color['blue']); + $visitorLine = imagecolorallocate($image, $unique_line_color['red'], $unique_line_color['green'], $unique_line_color['blue']); + $visitorText = imagecolorallocate($image, $unique_text_color['red'], $unique_text_color['green'], $unique_text_color['blue']); + $pointColor = imagecolorallocate($image, $point_color['red'], $point_color['green'], $point_color['blue']); + + // 배경선 채우기 + imagefilledrectangle($image, 0, 0, $graph_width-1, $graph_height-1, $fillBack); + + // 가로선 그리기 + $y_gap = ($graph_height - 32) /3; + for($i=0;$i<4;$i++) { + imageline($image, 5, 5+($i*$y_gap), $graph_width-5, 5+($i*$y_gap), $gridLine); + } + + // 세로선 그리기 + $x_gap = ($graph_width - 30) / ($day_range-1); + for($i=0;$i<$day_range;$i++) { + imageline($image, 15+($i*$x_gap), 5, 15+($i*$x_gap), $graph_height - 27, $gridLine); + } + + // 체크 무늬 배경 칠하기 + for($j=0;$j<$day_range-1;$j++) { + for($i=0;$i<3;$i++) { + if( ($j+$i)%2==1) continue; + imagefilledrectangle($image, 15+($j*$x_gap)+1, 5+($i*$y_gap)+1, 15+($j*$x_gap)+$x_gap-1, 5+($i*$y_gap)+$y_gap-1, $checkFillBack); + } + } + + // 그래프 그리기 + $prev_x = $prev_y = 0; + $step = 0; + + // 선 그림 + foreach($data as $date => $val) { + // 그래프를 그리기 위한 좌표 구함 + $unique_visitor = $val->unique_visitor; + if($max_unique_visitor == 0) $per = 0; + else $per = ($val->unique_visitor-$min_unique_visitor) / ($max_unique_visitor-$min_unique_visitor); + + // x,y 좌표 구함 + $cur_x = (int)($step * $x_gap); + $cur_y = (int)( ($graph_height-55) - ($graph_height-55)*$per); + + imageline($image, $prev_x+15, $prev_y+15, $cur_x+15, $cur_y+15, $visitorLine); + + $prev_x = $cur_x; + $prev_y = $cur_y; + + $step ++; + } + + // 포인트 + 숫자 표시 + $prev_x = $prev_y = 0; + $step = 0; + foreach($data as $date => $val) { + // 그래프를 그리기 위한 좌표 구함 + $unique_visitor = $val->unique_visitor; + if($max_unique_visitor == 0) $per = 0; + else $per = ($val->unique_visitor-$min_unique_visitor) / ($max_unique_visitor-$min_unique_visitor); + + // x,y 좌표 구함 + $cur_x = (int)($step * $x_gap); + $cur_y = (int)( ($graph_height-55) - ($graph_height-55)*$per); + + imagefilledrectangle($image, $cur_x+15-1, $cur_y+15-1, $cur_x+15+1, $cur_y+15+1, $pointColor); + + for($j=0;$j', Context::getRequestUri(), $image_src); + } + } +?> diff --git a/widgets/image_counter/queries/getCounterStatus.xml b/widgets/image_counter/queries/getCounterStatus.xml new file mode 100644 index 000000000..804c03512 --- /dev/null +++ b/widgets/image_counter/queries/getCounterStatus.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/widgets/newest_document/newest_document.class.php b/widgets/newest_document/newest_document.class.php index f0e212baa..b1a5f2227 100644 --- a/widgets/newest_document/newest_document.class.php +++ b/widgets/newest_document/newest_document.class.php @@ -34,7 +34,8 @@ } // DocumentModel::getDocumentList()를 이용하기 위한 변수 정리 - $obj->module_srl = implode(',',$module_srl); + if(is_array($module_srl)) $obj->module_srl = implode(',',$module_srl); + else $obj->module_srl = $module_srl; $obj->sort_index = $order_target; $obj->order_type = $order_type=="desc"?"asc":"desc"; $obj->list_count = $list_count;