19static const wchar_t __THIS_FILE__[] = L
"eshop/ViewProduct.cpp";
24static String getContent(
SQLFields& fields)
26 StringBuilder strContent;
27 String strType = fields.
byName(L
"CONTENT_TYPE").asString();
28 if (!strType.compareNoCase(L
"text", 4))
32 strContent = L
" ";
35 strContent = f.asString();
37 if (strType == L
"text/plain")
39 StringBuilder str = L
"<p>";
40 str += strContent.toString().replace_r(L
"\r?\n", L
"</p><p>",
true);
42 strContent = str.toString();
51 strContent = L
" ";
54 strContent = L
"<img src=\"image/";
55 strContent += f.asString() + L
"\" alt=\"image\">";
63 StringBuilder strSQL = L
""
64 "SELECT DISP_POSITION, CONTENT_TYPE, FILE_NAME, CONTENT "
65 " FROM ES_PRODUCT_DETAIL "
66 " WHERE PRODUCT_ID = ";
67 strSQL += String::valueOf(nProductID) + L
" ORDER BY DISP_ORDER";
73 pi.assign(L
"PRODUCT_DETAIL", L
" ");
79 int nSaveDispPosition = 0;
84 int nDispPosition = fields.
byName(L
"DISP_POSITION").asInteger();
91 if (nSaveDispPosition == 1)
93 row.append(L
"CONTENT", L
"<td> </td>");
94 pd.append(L
"ROW", row);
96 row.assign(L
"CONTENT", L
"<td colspan=\"2\">");
97 row.append(L
"CONTENT", getContent(fields));
98 row.append(L
"CONTENT", L
"</td>");
99 pd.append(L
"ROW", row);
102 if (nSaveDispPosition == 1)
104 row.append(L
"CONTENT", L
"<td> </td>");
105 pd.append(L
"ROW", row);
107 row.assign(L
"CONTENT", L
"<td>");
108 row.append(L
"CONTENT", getContent(fields));
109 row.append(L
"CONTENT", L
"</td>");
112 if (nSaveDispPosition != 1)
113 row.assign(L
"CONTENT", L
"<td> </td>");
115 row.append(L
"CONTENT", L
"<td>");
116 row.append(L
"CONTENT", getContent(fields));
117 row.append(L
"CONTENT", L
"</td>");
118 pd.append(L
"ROW", row);
121 nSaveDispPosition = nDispPosition;
124 if (nSaveDispPosition == 1)
126 row.assign(L
"CONTENT", L
"<td> </td>");
127 row.append(L
"CONTENT", L
"<td>");
128 pd.append(L
"ROW", row);
131 pi.assign(L
"PRODUCT_DETAIL", pd);
134bool EShopServlet::onViewProduct(
140 Writer& out = ctx.
writer();
142 TextTemplate tpl = *m_pViewProduct;
148 ListedStringToStringArrayMap::Iterator it =
150 if (it == ctx.__queryMap.end() || (*it).value.isEmpty())
166 q.
execute(L
"SELECT MIN(CATEGORY_ID) FROM ES_CATEGORY");
169 nCategoryID = q.
fields()[0].asInteger();
172 if (nCategoryID == 0)
175 TextTemplate& productList = tpl[L
"PRODUCT_LIST"];
176 TextTemplate& row = productList[L
"ROW"];
178 "SELECT PRODUCT_ID, PRODUCT_NAME, PRICE, SUMMARY, IMAGE_FILE_NAME "
180 " WHERE CATEGORY_ID = " + String::valueOf(nCategoryID)
181 + L
" ORDER BY PRODUCT_ID"
187 tpl.assign(L
"PRODUCT_LIST", L
"<p>등록된 목록이 없습니다.</p>\n");
191 String strActionHREF = String::format(L
"?%ls=%d",
194 productList.assign(L
"ACTION_HREF", strActionHREF);
198 SQLFields& fields = q.
fields();
199 nID = fields[0].asInteger();
202 + fields.
byName(L
"IMAGE_FILE_NAME").asString();
204 String sz = String::format(L
"?%ls=%d&%ls=%d",
208 row.assign(L
"IMAGE", strImage);
209 row.assign(L
"HREF", sz);
210 row.assign(fields, L
" ");
212 productList.append(L
"ROW", row);
216 tpl.assign(L
"PRODUCT_LIST", productList);
218 tpl.erase(L
"PRODUCT_INFO");
238 "SELECT CATEGORY_ID, PRODUCT_ID, PRODUCT_NAME, PRICE, UNIT, "
239 " SPEC, QUALITY, ORIGIN, PRODUCER, SUMMARY "
241 " WHERE PRODUCT_ID = " + String::valueOf(nProductID)
248 nCategoryID = q.
fields()[0].asInteger();
250 TextTemplate& pi = tpl[L
"PRODUCT_INFO"];
251 String strActionHREF = String::format(L
"?%ls=%d",
254 pi.assign(L
"ACTION_HREF", strActionHREF);
257 pi.assign(L
"IMAGE", L
"image/" + q.
fields()[1].asString() + L
"s.jpg");
258 pi.assign(q.
fields(), L
" ");
260 productDetail(pi, q, nProductID);
262 tpl.assign(L
"PRODUCT_INFO", pi);
263 tpl.erase(L
"PRODUCT_LIST");
269 TextTemplate& caLink = tpl[L
"CATEGORY_LINK"];
272 tpl.erase(L
"CATEGORY_ACTIVE");
275 "SELECT CATEGORY_ID, CATEGORY_NAME "
277 " ORDER BY CATEGORY_ID"
284 SQLFields& fields = q.
fields();
285 nID = fields[0].asInteger();
286 strName = fields[1].asString();
288 if (nID == nCategoryID)
290 TextTemplate& caActive = tpl[L
"CATEGORY_ACTIVE"];
291 caActive.assign(L
"CAPTION", strName);
292 tpl.append(L
"CATEGORY_LINK", caActive);
296 String sz = String::format(L
"?%ls=%d&%ls=%d",
300 caLink.assign(L
"HREF", sz);
301 caLink.assign(L
"CAPTION", strName);
302 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 CharsetConvertException *void execute() __DCL_THROWS1(SQLException *)
void CharsetConvertException *void fetch() __DCL_THROWS1(SQLException *)