17#if __DCL_HAVE_THIS_FILE__
24static String getContent(
SQLFields& fields)
26 StringBuilder strContent;
27 String strType = fields.
byName(L
"CONTENT_TYPE").asString();
28 if (!strType.compareNoCase(L
"text", 4)) {
31 strContent = L
" ";
33 strContent = f.asString();
35 if (strType == L
"text/plain") {
36 StringBuilder str = L
"<p>";
37 str += strContent.toString().replace_r(L
"\r?\n", L
"</p><p>",
true);
39 strContent = str.toString();
47 strContent = L
" ";
49 strContent = L
"<img src=\"image/";
50 strContent += f.asString() + L
"\" alt=\"image\">";
58 StringBuilder strSQL = L
""
59 "SELECT DISP_POSITION, CONTENT_TYPE, FILE_NAME, CONTENT "
60 " FROM ES_PRODUCT_DETAIL "
61 " WHERE PRODUCT_ID = ";
62 strSQL += String::valueOf(nProductID) + L
" ORDER BY DISP_ORDER";
67 pi.assign(L
"PRODUCT_DETAIL", L
" ");
73 int nSaveDispPosition = 0;
77 int nDispPosition = fields.
byName(L
"DISP_POSITION").asInteger();
79 switch(nDispPosition) {
83 if (nSaveDispPosition == 1) {
84 row.append(L
"CONTENT", L
"<td> </td>");
85 pd.append(L
"ROW", row);
87 row.assign(L
"CONTENT", L
"<td colspan=\"2\">");
88 row.append(L
"CONTENT", getContent(fields));
89 row.append(L
"CONTENT", L
"</td>");
90 pd.append(L
"ROW", row);
94 if (nSaveDispPosition == 1) {
95 row.append(L
"CONTENT", L
"<td> </td>");
96 pd.append(L
"ROW", row);
98 row.assign(L
"CONTENT", L
"<td>");
99 row.append(L
"CONTENT", getContent(fields));
100 row.append(L
"CONTENT", L
"</td>");
104 if (nSaveDispPosition != 1)
105 row.assign(L
"CONTENT", L
"<td> </td>");
107 row.append(L
"CONTENT", L
"<td>");
108 row.append(L
"CONTENT", getContent(fields));
109 row.append(L
"CONTENT", L
"</td>");
110 pd.append(L
"ROW", row);
114 nSaveDispPosition = nDispPosition;
117 if (nSaveDispPosition == 1) {
118 row.assign(L
"CONTENT", L
"<td> </td>");
119 row.append(L
"CONTENT", L
"<td>");
120 pd.append(L
"ROW", row);
123 pi.assign(L
"PRODUCT_DETAIL", pd);
126bool EShopServlet::onViewProduct(
131 Writer& out = ctx.
writer();
133 TextTemplate tpl = *__pViewProduct;
139 ListedStringToStringArrayMap::Iterator it =
141 if (it == ctx.__queryMap.end() || (*it).value.isEmpty()) {
147 catch(Exception* e) {
152 q.
execute(L
"SELECT MIN(CATEGORY_ID) FROM ES_CATEGORY");
155 nCategoryID = q.
fields()[0].asInteger();
158 if (nCategoryID == 0)
161 TextTemplate& productList = tpl[L
"PRODUCT_LIST"];
162 TextTemplate& row = productList[L
"ROW"];
164 "SELECT PRODUCT_ID, PRODUCT_NAME, PRICE, SUMMARY, IMAGE_FILE_NAME "
166 " WHERE CATEGORY_ID = " + String::valueOf(nCategoryID)
167 + L
" ORDER BY PRODUCT_ID"
172 tpl.assign(L
"PRODUCT_LIST", L
"<p>등록된 목록이 없습니다.</p>\n");
175 String strActionHREF = String::format(L
"?%ls=%d",
178 productList.assign(L
"ACTION_HREF", strActionHREF);
181 SQLFields& fields = q.
fields();
182 nID = fields[0].asInteger();
185 + fields.
byName(L
"IMAGE_FILE_NAME").asString();
187 String sz = String::format(L
"?%ls=%d&%ls=%d",
191 row.assign(L
"IMAGE", strImage);
192 row.assign(L
"HREF", sz);
193 row.assign(fields, L
" ");
195 productList.append(L
"ROW", row);
199 tpl.assign(L
"PRODUCT_LIST", productList);
201 tpl.erase(L
"PRODUCT_INFO");
211 catch(Exception* e) {
217 "SELECT CATEGORY_ID, PRODUCT_ID, PRODUCT_NAME, PRICE, UNIT, "
218 " SPEC, QUALITY, ORIGIN, PRODUCER, SUMMARY "
220 " WHERE PRODUCT_ID = " + String::valueOf(nProductID)
227 nCategoryID = q.
fields()[0].asInteger();
229 TextTemplate& pi = tpl[L
"PRODUCT_INFO"];
230 String strActionHREF = String::format(L
"?%ls=%d",
233 pi.assign(L
"ACTION_HREF", strActionHREF);
236 pi.assign(L
"IMAGE", L
"image/" + q.
fields()[1].asString() + L
"s.jpg");
237 pi.assign(q.
fields(), L
" ");
239 productDetail(pi, q, nProductID);
241 tpl.assign(L
"PRODUCT_INFO", pi);
242 tpl.erase(L
"PRODUCT_LIST");
248 TextTemplate& caLink = tpl[L
"CATEGORY_LINK"];
251 tpl.erase(L
"CATEGORY_ACTIVE");
254 "SELECT CATEGORY_ID, CATEGORY_NAME "
256 " ORDER BY CATEGORY_ID"
262 SQLFields& fields = q.
fields();
263 nID = fields[0].asInteger();
264 strName = fields[1].asString();
266 if (nID == nCategoryID) {
267 TextTemplate& caActive = tpl[L
"CATEGORY_ACTIVE"];
268 caActive.assign(L
"CAPTION", strName);
269 tpl.append(L
"CATEGORY_LINK", caActive);
272 String sz = String::format(L
"?%ls=%d&%ls=%d",
276 caLink.assign(L
"HREF", sz);
277 caLink.assign(L
"CAPTION", strName);
278 tpl.append(L
"CATEGORY_LINK", caLink);
@ CM_VIEW_SHOPPING_BASKET
SQLConnection * SQLConn() const
static String dirname(const String &_path)
static int32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
_CONST SQLField & byName(const wchar_t *_name) _CONST __DCL_THROWS1(InvalidIndexException *)
_CONST SQLFields & fields() _CONST
void execute() __DCL_THROWS1(SQLException *)
void fetch() __DCL_THROWS1(SQLException *)