panpan @ 2013.08.07 , 05:17 下午
Jerry Patrick是来自美国乔治亚州纽南市的一名汽车发烧友,过去三十余年中他一直着迷于自制汽车。但在几年前他厌倦了普普通通的卡玛罗和野马,于是乎他决定挑战自己技术,制造一些独特车型。现在呢,他的车库满是劲爆车车,比如霹雳游侠开的霹雳车、史酷比开的The Mystery Machine,还有蝙蝠侠的座驾蝙蝠车。
[-]
[-]
几年前,Jerry Patrick心血来潮,觉得把自己对汽车的热爱和对电影的热爱结合起来会是一个非常伟大的创意,所以他就开始打造实用的电影和电视中最流行的汽车复制品。这位经验老到的造车王任何时候手上都有25到35辆超酷汽车。他的创作是从“克雷格名单”和“eBay”网站或人们口口相传的已经落后的老汽车开始的,但过了几个月或几年后这些老车又成为了电影迷们心心念念期望能有幸驾驶的梦想座驾。Jerry Patrick的酷车收藏包括《惊天动地60秒》中经典跑车野马“Eleanor”、万能金龟车Herbie、《霹雳游侠》中的霹雳车、史酷比的Mystery Machine,还有令人叹为观止的蝙蝠车,此车配备了伸缩自如的机关枪哦。
光是蝙蝠车就耗费了Jerry三年的时间,因为一切都需要定做,但是,无论什么时候把车开出去遛一遛,他赢得的那么多的关注让一切辛勤付出都值得。每一次复制过程中,他和他的团队努力让复制品跟原车尽可能相似,不管是外观还是内部装置。虽然他搞这些是为了爱好和乐趣,但这位汽车发烧友经常开着酷车参加社区活动,在那人们可以近距离欣赏自己的爱车。
虽然他已经拥有足够多的电影名车了,比任何人梦想的都要多,Jerry仍然打算再造一些“四轮奇迹”,扩充自己的收藏,他的目光已经锁定了《汽车总动员》中的Mater、天龙特工队开的货车和《变形金刚》中的大黄蜂。
[-]
[-]
[-]
[-]
'
});
// 回复行组件
Vue.component('reply-row', {
data() {
return {
showReportForm: false,
reason: ""
};
},
props: {
comment: Object,
order: String,
index: Number,
totalComments: Number
},
created: function() {
this.index++;
},
watch: {
comment(newValue, oldValue) {
console.log(this.order, this.totalComments, this.index);
if (this.order === 'desc') {
this.index = this.totalComments - this.index;
} else {
this.index++;
}
}
},
methods: {
vote: function (commentID, voteType) {
const formData = new FormData();
formData.append('like_type', voteType);
formData.append('comment_id', commentID);
formData.append('data_type', 'tucao');
axios.post('/api/comment/vote', formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(response => {
if (response.data.code !== 0) {
jandan_show_msg(response.data.msg);
return;
}
jandan_show_msg("发布成功,请等待管理员审核!");
this.content = '';
this.subject = '';
}) .catch(error => {
jandan_show_msg("请求错误");
});
axios.post('/api/forum/replies/vote', {
reply_id: parseInt(replyID),
vote_type: parseInt(voteType)
}).then(function (response) {
if (response.data.error === 0) {
if (voteType === 1) {
$this.reply.vote_positive = $this.post.vote_positive+1
} else {
$this.reply.vote_negative = $this.post.vote_negative+1
}
} else {
jandan_show_msg(response.data.msg);
}
}).catch(function (error) {
});
},
showReport: function () {
this.showReportForm = true;
},
submitReport: function() {
if (!confirm("确定要举报这条信息嘛?")) {
return;
}
let $this = this;
const formData = new FormData();
formData.append('action', 'report');
formData.append('comment_id', this.comment.comment_ID.toString());
formData.append('reason', "");
formData.append('type', "2");
axios.post('/api/report/comment', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
})
.then(function (response) {
jandan_show_msg(response.data.msg);
$this.showReportForm = false;
})
.catch(function (error) {
});
}
},
template: ''
});
// 主题表单组件
Vue.component('comment-form', {
props: {
},
data() {
return {
content: '',
subject: '',
}
},
methods: {
handleKeyUp: function (e) {
if(e.ctrlKey && e.keyCode === 13) { //用户点击了ctrl+enter触发
this.createComment();
}
},
createComment: function() {
const formData = new FormData();
formData.append('content', this.content);
formData.append('comment_post_ID', parseInt(PAGE_ID));
axios.post('/api/tucao/create', formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(response => {
if (response.data.code !== 0) {
jandan_show_msg(response.data.msg);
return;
}
jandan_show_msg("发布成功,请等待管理员审核!");
this.content = '';
this.subject = '';
}) .catch(error => {
jandan_show_msg("请求错误");
});
}
},
template: ''
});
// 定义评论列表
const List = {
props: {
comments: Array,
id: Number
},
data() {
return {
totalPages: 0,
currentPage: 1,
itemsPerPage: 50,
currentStartID: 0,
pageID: PAGE_ID,
comments: null,
loading: true,
errored: false,
showForm: false,
showMore: true,
show: true
}
},
created: function() {
this.id = this.$route.params.id;
if (this.$route.params.pageNumber) {
this.currentPage = this.$route.params.pageNumber;
}
this.requestList();
let loginCookie = getCookie('egg_login_nickname');
console.log(loginCookie);
if (loginCookie !== null) {
this.showForm = true;
}
},
computed: {
visiblePageNumbers() {
const start = Math.max(this.currentPage - 4, 1);
const end = Math.min(this.currentPage + 4, this.totalPages);
const range = [];
for (let i = start; i <= end; i++) {
range.push(i);
}
return range;
},
showFirstItem() {
return this.visiblePageNumbers[0] !== 1;
},
showLastItem() {
return this.visiblePageNumbers[this.visiblePageNumbers.length - 1] !== this.totalPages;
},
showPrevEllipsis() {
return this.visiblePageNumbers[0] > 2;
},
showNextEllipsis() {
return this.visiblePageNumbers[this.visiblePageNumbers.length - 1] < this.totalPages - 1;
},
},
methods: {
loadMore: function () {
this.requestList();
},
loadData: function() {
this.currentStartID = 0;
this.posts = null;
},
requestList: function() {
let uri = '/api/tucao/post/'+ PAGE_ID + '?page='+ this.currentPage;
axios.get(uri)
.then(response => {
this.totalPages = Math.ceil(response.data.total / this.itemsPerPage);
this.comments = response.data.data;
if (this.comments.length < 20) {
this.showMore = false;
}
this.log(this.comments);
})
.catch(error => {
this.errored = true;
})
.finally(() => this.loading = false);
},
setCurrentPage(pageNumber) {
this.currentPage = pageNumber;
this.requestList();
},
formToggle: function toggleForm () {
this.showForm = true;
this.$nextTick(() => {
let subject = this.$refs.topicForm.$refs.subject
subject.focus();
subject.scrollIntoView();
});
}
},
template: '' +
''
};
// 定义路由
const routes = [
{
path: '/',
name: 'home',
component: List
}
];
// 创建路由实例
const router = new VueRouter({
routes // 等价于 routes: routes
});
// 创建 Vue 实例并挂载到 #app 元素上
new Vue({
el: '#jandan-app',
router
});